diff --git a/.babelrc b/.babelrc index 1500fe9a..170bd0bd 100644 --- a/.babelrc +++ b/.babelrc @@ -1,93 +1,37 @@ { "presets": [ - ["env", {"modules": false}], - "react", - "stage-0" + ["@babel/preset-env", {"modules": false, "useBuiltIns": "entry"}], + "@babel/preset-react", + ["@babel/preset-stage-0", { "decoratorsLegacy": true }] ], "plugins": [ - "transform-decorators-legacy" + ["@babel/plugin-transform-runtime", { + "helpers": false, + "polyfill": false, + "regenerator": true, + "moduleName": "@babel/runtime" + }], + "@babel/plugin-syntax-export-default-from", + "@babel/plugin-syntax-dynamic-import", + ["@babel/plugin-proposal-decorators", { "legacy": true }], + ["@babel/plugin-proposal-class-properties", { "loose": true }] ], "env": { + "production": { + "plugins": [ + "@babel/plugin-transform-react-constant-elements" + ] + }, "development": { "plugins": [ "react-hot-loader/babel" ] }, "test": { - "presets": ["es2015", "react", "stage-0"], + "presets": ["@babel/preset-es2015", "@babel/preset-react", "@babel/preset-stage-0"], "plugins": [ - "transform-decorators-legacy" + ["@babel/plugin-proposal-decorators", { "legacy": true }] ] } } } - -/* -Presets/Plugins order matters -[Ref](http://babeljs.io/docs/plugins/#plugin-preset-ordering) - -In short: -1. plugins run before presets -2. plugins run in top-down order -3. presets run in bottom-up order -*/ - -/* As of 2017-02-23, most plugins at semver "^6.22.0" -* Below are plugins that're included in aforementioned presets, in the order they're supposed to apply - -# presets stage-0 to stage-3: -## stage-0 -transform-do-expressions -transform-function-bind -## stage-1 -transform-class-constructor-call -transform-export-extensions -## stage-2 -transform-class-properties -transform-decorators -syntax-dynamic-import -## stage-3 -syntax-trailing-function-commas -transform-async-generator-functions -transform-async-to-generator -transform-exponentiation-operator -transform-object-rest-spread - -# preset react: -preset-flow -syntax-jsx -transform-react-jsx -transform-react-display-name - -* preset es2015, es2016, es2017: -## es2015 -check-es2015-constants -transform-es2015-arrow-functions -transform-es2015-block-scoped-functions -transform-es2015-block-scoping -transform-es2015-classes -transform-es2015-computed-properties -transform-es2015-destructuring -transform-es2015-duplicate-keys -transform-es2015-for-of -transform-es2015-function-name -transform-es2015-literals -transform-es2015-modules-amd -transform-es2015-modules-commonjs -transform-es2015-modules-systemjs -transform-es2015-modules-umd -transform-es2015-object-super -transform-es2015-parameters -transform-es2015-shorthand-properties -transform-es2015-spread -transform-es2015-sticky-regex -transform-es2015-template-literals -transform-es2015-typeof-symbol -transform-es2015-unicode-regex -transform-regenerator -## es2016 -transform-exponentiation-operator -## es2017 -syntax-trailing-function-commas -transform-async-to-generator -*/ diff --git a/.eslintignore b/.eslintignore index c45d403d..8b5e9dc4 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,3 +1,4 @@ node_modules/* static/* *.spec.js +webpack_configs diff --git a/.eslintrc b/.eslintrc index d8c1b6e1..a5c1f7bc 100644 --- a/.eslintrc +++ b/.eslintrc @@ -10,6 +10,7 @@ "no-param-reassign": 0, "new-cap": 0, "no-eval": 0, + "no-undef": 0, "no-plusplus": 0, "no-return-assign": 0, "no-underscore-dangle": 0, @@ -23,14 +24,16 @@ "named": "always", "asyncArrow": "ignore" }], + "react/prefer-stateless-function": 0, + "import/no-extraneous-dependencies": 0, + "import/no-unresolved": 0, "jsx-quotes": ["error", "prefer-single"], + "react/jsx-filename-extension": 0, "react/jsx-first-prop-new-line": 0, "react/forbid-prop-types": 0, + "import/extensions": 0, "jsx-a11y/no-static-element-interactions": 0 }, - "settings": { - "import/resolver": "webpack" - }, "globals": { "i18n": false, "__PACKAGE_PORTS__": false, diff --git a/.travis.yml b/.travis.yml index a5732cc6..fa452b7b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,7 @@ dist: trusty language: node_js node_js: -- '7' +- '10.14.1' cache: yarn diff --git a/404.html b/404.html new file mode 100644 index 00000000..9d2876db --- /dev/null +++ b/404.html @@ -0,0 +1,91 @@ + + + + + + 404 Page + + + + + +
+
+
404!
+

页面,我找不到你,我找不到你啊 ~

+ 返回首页 +
+
+
+ + diff --git a/500.html b/500.html new file mode 100644 index 00000000..4b350f16 --- /dev/null +++ b/500.html @@ -0,0 +1,91 @@ + + + + + + 500 Page + + + + + +
+
+
500!
+

抱歉,系统出错,正在抢修中~

+ 返回首页 +
+
+
+ + diff --git a/502.html b/502.html new file mode 100644 index 00000000..aa78df95 --- /dev/null +++ b/502.html @@ -0,0 +1,78 @@ + + + + + + 502 Page + + + + + +
+
+
502!
+
+

后端,我连不上你啊,我连不上你~

+

请在 Cloud Studio 中检查:

+

1、应用有没有监听访问链接生成的端口号。

+

2、您生成的链接是否已经是否。

+
+
+
+
+ + diff --git a/app/CodingSDK.js b/app/CodingSDK.js index 79cf504f..e72cac0c 100644 --- a/app/CodingSDK.js +++ b/app/CodingSDK.js @@ -10,15 +10,16 @@ import * as Modal from './components/Modal/actions' import * as SideBarActions from './components/Panel/SideBar/actions' import { notify, NOTIFY_TYPE } from './components/Notification/actions' import api from '../app/backendAPI' -import { closeWebsocketClient, closeTtySocketClient } from '../app/backendAPI/workspaceAPI' +import { closeWebsocketClient, closeTtySocketClient, closeSearchWebsocketClient } from '../app/backendAPI/workspaceAPI' import * as Panel from './components/Panel/actions' import * as File from './commons/File' import initializeState from './containers/Initialize/state' -import { app as appExports, lib as libExports } from './exports' +import { app as appExports, lib as libExports, cloudstudio } from './exports' window.app = appExports window.lib = libExports +window.cloudstudio = cloudstudio export default class { // app data @@ -61,7 +62,8 @@ export default class { get socketManager () { return ({ closeWebsocketClient, - closeTtySocketClient + closeTtySocketClient, + closeSearchWebsocketClient }) } diff --git a/app/account.html b/app/account.html new file mode 100644 index 00000000..c389bb43 --- /dev/null +++ b/app/account.html @@ -0,0 +1,16 @@ + + + + + + Cloud Studio - 开启云端开发模式 WebIDE + + + + + + +
+
+ + diff --git a/app/account.jsx b/app/account.jsx new file mode 100644 index 00000000..4da1937c --- /dev/null +++ b/app/account.jsx @@ -0,0 +1,23 @@ +import { AppContainer } from 'react-hot-loader' +import React from 'react' +import { render } from 'react-dom' +import Login from './containers/Root/account' +import './styles/main.styl' + +const rootElement = document.getElementById('root') +async function startApp (module) { + if (__DEV__) { + const hotLoaderRender = () => + render(, rootElement) + + hotLoaderRender() + if (module.hot) module.hot.accept('./containers/Login', hotLoaderRender) + } else { + render(, rootElement) + } +} + +startApp(module) + +const log = (...args) => console.log(...args) || (x => x) +if (__VERSION__) log(`[VERSION] ${__VERSION__}`) diff --git a/app/backendAPI/fileAPI.js b/app/backendAPI/fileAPI.js index 14afbc83..8f20854d 100644 --- a/app/backendAPI/fileAPI.js +++ b/app/backendAPI/fileAPI.js @@ -1,23 +1,41 @@ import { request, qs } from '../utils' -import config from '../config' import axios from 'axios' +import * as maskActions from 'components/Mask/actions' export function fetchPath (path, order, group) { return request.get(`/workspaces/${config.spaceKey}/files`, { path, order: true, group: true + }).then((res) => { + return res.filter((item) => { + return !item.name.startsWith('.nfs000') + }) }) } export function downloadFile (path, shouldPacked) { + let filePath = path || config.projectName || 'Home' + if (shouldPacked) { + filePath += '.tar.gz' + } + // if (config.isDefault) { + // filePath = 'Home.tar.gz' + // } const packOrRaw = shouldPacked ? 'pack' : 'raw' let url = `${config.baseURL}/workspaces/${config.spaceKey}/${packOrRaw}` url += `?${qs.stringify({ path, inline: false })}` - window.open(url, '_blank') + // window.open(url, '_blank') + const downloadTimeout = setTimeout(() => { + maskActions.showMask({ message: i18n`file.preparingDownload`, countdown: 60 }) + }, 600) + request.download(url, filePath.split('/').pop()).then((res) => { + clearTimeout(downloadTimeout) + maskActions.hideMask() + }) } export function uploadFile (path, file, option) { @@ -111,3 +129,11 @@ export function searchFile (value, includeNonProjectItems = false) { } }) } + +export function searchTxt (keyword) { + return request.post(`/workspaces/${config.spaceKey}/txt-search`, { keyword }, { + headers: { + 'Content-Type': 'application/json', + } + }) +} diff --git a/app/backendAPI/gitAPI.js b/app/backendAPI/gitAPI.js index acc1fe47..e1290a7f 100644 --- a/app/backendAPI/gitAPI.js +++ b/app/backendAPI/gitAPI.js @@ -26,10 +26,7 @@ export function gitPull () { } export function gitPushAll () { - return request.post(`/git/${config.spaceKey}/push?all=true`).then((res) => { - if (res.ok || res.nothingToPush) return true - if (!res.ok) return false - }) + return request.post(`/git/${config.spaceKey}/push?all=true`) } export function gitFetch () { return request.post(`/git/${config.spaceKey}/fetch`) @@ -139,9 +136,23 @@ export function gitLogs (params = {}) { parentIds: c.parents, message: c.shortMessage, date: new Date(c.commitTime * 1000), + shortId: c.shortName, }))) + .catch(() => {}) } export function gitRefs () { return request.get(`/git/${config.spaceKey}/refs`) } + +export function gitClone (data) { + return request.post('ws/clone', data, { headers: { Accept: 'application/vnd.coding.v1+json' } }); +} + +export function gitInit () { + return request.post(`/git/${config.spaceKey}/init`) +} + +export function gitRemote (url) { + return request.post(`/git/${config.spaceKey}/remote`, { url }) +} diff --git a/app/backendAPI/index.js b/app/backendAPI/index.js index ddbdba5b..22bb2c06 100644 --- a/app/backendAPI/index.js +++ b/app/backendAPI/index.js @@ -3,12 +3,18 @@ import * as gitAPI from './gitAPI' import * as packageAPI from './packageAPI' import * as workspaceAPI from './workspaceAPI' import * as websocketClients from './websocketClients' +import * as userAPI from './userAPI' +import * as projectAPI from './projectAPI' +import * as projectSettingAPI from './projectSettingApi' export default { ...fileAPI, ...gitAPI, ...packageAPI, - ...workspaceAPI + ...workspaceAPI, + ...userAPI, + ...projectAPI, + ...projectSettingAPI, } export { websocketClients } diff --git a/app/backendAPI/languageServerAPI.js b/app/backendAPI/languageServerAPI.js new file mode 100644 index 00000000..0a0f1797 --- /dev/null +++ b/app/backendAPI/languageServerAPI.js @@ -0,0 +1,10 @@ +import { request } from 'utils' +import config from 'config' + +export function fetchLanguageServerSetting (spaceKey) { + return request.get(`/settings/${spaceKey}/language`) +} + +export function setLanguageServerOne ({ type, srcPath }) { + return request.put(`/settings/${config.spaceKey}/language/one`, { type, srcPath }) +} diff --git a/app/backendAPI/packageAPI.js b/app/backendAPI/packageAPI.js index 5de65c09..ded5bbfc 100644 --- a/app/backendAPI/packageAPI.js +++ b/app/backendAPI/packageAPI.js @@ -26,6 +26,9 @@ export const fetchPackageInfo = (pkgName, pkgVersion, target) => export const fetchPackageScript = (props) => { if (Array.isArray(props)) { const concatedUrl = props.reduce((p, v, i) => `${p}${v.pkgName}/${v.pkgVersion}/index.js${i !== props.length - 1 ? ',' : ''}`, '??') + if (!config.packageDev && config.isPlatform) { + return axios.get(`${window.location.origin}/packages/${concatedUrl}`).then(res => res.data) + } return axios.get(`${packageServer}/packages/${concatedUrl}`).then(res => res.data) } return axios.get(`${props.target || packageServer}/packages/${props.pkgName}/${props.pkgVersion}/index.js`).then(res => res.data) @@ -42,9 +45,29 @@ export const enablePackageHotReload = (target) => { socket.on('change', (data) => { if (!data) return if (target) { - console.log(`plugin is reloading from ${target}`, data) + console.log(`[Package Hot Reload] Plugin is reloading from ${target}.`, data) data.codingIdePackage.TARGET = target } fetchPackage(data.codingIdePackage, 'reload') }) } + +export const fetchUserPackagelist = () => { + return request.get('/user-plugin/enable/list') +} + +export const fetchUserPackageScript = (url) => { + return axios.get(url).then(res => res.data) +} + +export const fethUserPreDeployPlugins = () => { + return request.get('/user-plugin/pre/deploy/list') +} + +export const fetchPackageInfomation = () => { + return request.get(`/user-plugin/info/${config.spaceKey}`) +} + +export const getMyPlugin = () => { + return request.get('/user-plugin/dev/list?page=0&size=100') +} diff --git a/app/backendAPI/pluginAPI.js b/app/backendAPI/pluginAPI.js new file mode 100644 index 00000000..1adcaa10 --- /dev/null +++ b/app/backendAPI/pluginAPI.js @@ -0,0 +1,5 @@ +import { request, qs } from '../utils' + +export function fetchPackageHMRModule (packagename, version) { + return request(`/tty/${config.shardingGroup}/${config.spaceKey}/connect-other-service/packages/${packagename}/${version}`) +} diff --git a/app/backendAPI/projectAPI.js b/app/backendAPI/projectAPI.js new file mode 100644 index 00000000..1e2abdaf --- /dev/null +++ b/app/backendAPI/projectAPI.js @@ -0,0 +1,34 @@ +import { request } from '../utils' +import config from '../config' + +export function fetchProjects () { + return request.get('/projects') +} + +export function fetchTemplates () { + return request.get('/projects?template=true') +} + +export function findCodingProject ({ projectName, ownerName }) { + return request.get(`ws/find/coding/${ownerName}/${projectName}`, null, { headers: { Accept: '*/*' } }) +} + +export function findExternalProject ({ url }) { + return request.get(`ws/find/coding/${config.globalKey}`, { url }) +} + +export function syncProject () { + return request.post('/project/sync') +} + +export function queryCodingProject ({ source = 'coding', projectName }) { + return request.get(`/queryCodingProject`, { source, projectName }) +} + +export function showPublicSshKey () { + return request.get('user/public_key', null, { headers: { Accept: 'application/vnd.coding.v1+json' } }); +} + +export function createProject (options) { + return request.post('/projects', options, { headers: { Accept: '*/*' } }); +} diff --git a/app/backendAPI/projectSettingApi.js b/app/backendAPI/projectSettingApi.js new file mode 100644 index 00000000..7601f218 --- /dev/null +++ b/app/backendAPI/projectSettingApi.js @@ -0,0 +1,26 @@ +import request from 'utils/request' +import config from 'config' + +export function fetchProjectType () { + return request.get(`/ws/${config.spaceKey}/type`) +} + +export function putProjectType (projectConfigDto) { + return request.put(`/ws/${config.spaceKey}/type`, projectConfigDto, { + headers: { + 'Content-Type': 'application/json', + } + }) +} + +export function fetchClasspath () { + return request.get(`/ws/${config.spaceKey}/classpath`) +} + +export function postClasspath (classpath) { + return request.post(`/ws/${config.spaceKey}/classpath`, classpath, { + headers: { + 'Content-Type': 'application/json', + } + }) +} diff --git a/app/backendAPI/searchAPI.js b/app/backendAPI/searchAPI.js new file mode 100644 index 00000000..23e0aaee --- /dev/null +++ b/app/backendAPI/searchAPI.js @@ -0,0 +1,26 @@ +import { SearchSocketClient } from './websocketClients' +import config from 'config'; + +export function searchWorkspaceUp() { + SearchSocketClient.$$singleton.send(`/app/ws/up`, {spaceKey: config.spaceKey}); +} + +export function searchWorkspaceDown() { + SearchSocketClient.$$singleton.send(`/app/ws/down`, {spaceKey: config.spaceKey}); +} + +export function searchWorkspaceStatus() { + SearchSocketClient.$$singleton.send(`/app/ws/status`, {spaceKey: config.spaceKey}); +} + +export function searchString(searching, randomKey) { + SearchSocketClient.$$singleton.send(`/app/search/string`, {spaceKey: config.spaceKey, randomKey: randomKey}, JSON.stringify(searching)); +} + +export function searchPattern(searching, randomKey) { + SearchSocketClient.$$singleton.send(`/app/search/pattern`, {spaceKey: config.spaceKey, randomKey: randomKey}, JSON.stringify(searching)); +} + +export function searchInterrupt(taskId) { + SearchSocketClient.$$singleton.send(`/app/search/interrupt`, {spaceKey: config.spaceKey}, taskId); +} \ No newline at end of file diff --git a/app/backendAPI/userAPI.js b/app/backendAPI/userAPI.js new file mode 100644 index 00000000..7a2b8629 --- /dev/null +++ b/app/backendAPI/userAPI.js @@ -0,0 +1,46 @@ +import config from '../config' +import { request } from '../utils' + +export function hasCaptcha () { + return request.get('/login/captcha', null, + { headers: { Accept: '*/*' } } + ) +} + +export function login ({ + password, + email, + captcha, + remember_me +}) { + return request.post(`/login${location.search ? location.search : '?return_url=/dashboard'}`, { + password, + email, + captcha, + remember_me + }) +} + +// 两部验证 +export function loginCode ({ + code +}) { + return request.post(`/login${location.search ? location.search : '?return_url=/dashboard'}`, { + code + }) +} + +export function signout () { + return request.get('/logout') +} + +export function getUserProfile () { + // @fixme: initialize2 requires removing .then(res => res.data) + return request.get('/user/current', null, + { headers: { Accept: '*/*' } } + ) +} + +export function bindQcloud (data) { + return request.post(`/oauth/qcloud/bind_with_authentication/`, data) +} diff --git a/app/backendAPI/websocketClients.js b/app/backendAPI/websocketClients.js index d965f9cf..13682a34 100644 --- a/app/backendAPI/websocketClients.js +++ b/app/backendAPI/websocketClients.js @@ -24,6 +24,7 @@ class FsSocketClient { delayMax: 5000, }) this.maxAttempts = 7 + this.shouldClose = false; FsSocketClient.$$singleton = this emitter.on(E.SOCKET_RETRY, this.reconnect.bind(this)) } @@ -40,7 +41,11 @@ class FsSocketClient { this.successCallback(this.stompClient) } const error = (frame) => { - log('fsSocket error', this.socket) + if (this.shouldClose) { + this.shouldClose = false; + return; + } + log('[FS Socket] FsSocket error', this.socket) switch (this.socket.readyState) { case SockJS.CLOSING: case SockJS.CLOSED: @@ -60,7 +65,7 @@ class FsSocketClient { reconnect () { if (config.fsSocketConnected) return - log(`try reconnect fsSocket ${this.backoff.attempts}`) + log(`[FS Socket] Try reconnect fsSocket ${this.backoff.attempts}`) // unset this.socket this.socket = undefined if (this.backoff.attempts <= this.maxAttempts) { @@ -80,8 +85,16 @@ class FsSocketClient { close () { const self = this if (config.fsSocketConnected) { - self.socket.close(1000, 123) - runInAction(() => config.fsSocketConnected = false) + self.shouldClose = true; + self.socket.close(); + emitter.emit(E.SOCKET_TRIED_FAILED); + runInAction(() => config.fsSocketConnected = false); + } + if (TtySocketClient.$$singleton) { + TtySocketClient.$$singleton.close(); + } + if(SearchSocketClient.$$singleton) { + SearchSocketClient.$$singleton.close(); } } } @@ -107,7 +120,6 @@ class TtySocketClient { } else { this.socket = io.connect(config.baseURL, { resource: 'coding-ide-tty1' }) } - this.backoff = getBackoff({ delayMin: 1500, delayMax: 10000, @@ -150,22 +162,122 @@ class TtySocketClient { } reconnect () { - log(`try reconnect ttySocket ${this.backoff.attempts}`) if (this.backoff.attempts <= this.maxAttempts && !this.socket.connected) { const timer = setTimeout(() => { this.connect() + clearTimeout(timer) }, this.backoff.duration()) } else { - warn(`TTY reconnection fail after ${this.backoff.attempts} attempts`) + warn(`[TTY Socket] TTY reconnection fail after ${this.backoff.attempts} attempts`) this.backoff.reset() } } close () { if (config.ttySocketConnected) { this.socket.disconnect('manual') - TtySocketClient.$$singleton = null + // TtySocketClient.$$singleton = null } } } -export { FsSocketClient, TtySocketClient } +class SearchSocketClient { + constructor () { + if (SearchSocketClient.$$singleton) return SearchSocketClient.$$singleton + + const wsUrl = config.wsURL + const firstSlashIdx = wsUrl.indexOf('/', 8) + const [host, path] = firstSlashIdx === -1 ? [wsUrl, ''] : [wsUrl.substring(0, firstSlashIdx), wsUrl.substring(firstSlashIdx)] + + // const url = `${host}:8066/search/sockjs` + const url = `${host}${path}/search/sockjs/${config.spaceKey}` + // http://dev.coding.ide/ide-ws/search/sockjs/kfddvb/info + this.sockJSConfigs = [url, {}, {server: `${config.spaceKey}`, transports: 'websocket'}] + + this.backoff = getBackoff({ + delayMin: 1500, + delayMax: 10000, + }) + this.maxAttempts = 5 + + SearchSocketClient.$$singleton = this + emitter.on(E.SOCKET_RETRY, () => { + this.reconnect() + }) + } + + connect () { + if (!this.socket || !this.stompClient) { + this.socket = new SockJS(...this.sockJSConfigs) + this.stompClient = Stomp.over(this.socket) + this.stompClient.debug = false // stop logging PING/PONG + } + const success = () => { + runInAction(() => config.searchSocketConnected = true) + this.backoff.reset() + this.successCallback(this.stompClient) + } + const error = (frame) => { + if (this.shouldClose) { + this.shouldClose = false; + return; + } + log('[SEARCH Socket] SearchSocket error', this.socket) + switch (this.socket.readyState) { + case SockJS.CLOSING: + case SockJS.CLOSED: + runInAction(() => config.searchSocketConnected = false) + this.reconnect() + break + case SockJS.OPEN: + log('FRAME ERROR', frame) + break + default: + } + this.errorCallback(frame) + } + + this.stompClient.connect({}, success, error) + } + + reconnect () { + if (config.searchSocketConnected) return + log(`[SEARCH Socket] reconnect searchSocket ${this.backoff.attempts}`) + // unset this.socket + this.socket = undefined + if (this.backoff.attempts <= this.maxAttempts) { + const retryDelay = this.backoff.duration() + log(`Retry after ${retryDelay}ms`) + const timer = setTimeout( + this.connect.bind(this) + , retryDelay) + } else { + // must emit ,ops correct? + // emitter.emit(E.SOCKET_TRIED_FAILED) + notify({ message: i18n`global.onSocketError`, notifyType: NOTIFY_TYPE.ERROR }) + this.backoff.reset() + warn('Sock connected failed, something may be broken, reload page and try again') + } + } + + close () { + const self = this + if (config.searchSocketConnected) { + self.shouldClose = true; + self.socket.close(); + // must emit ??? + // emitter.emit(E.SOCKET_TRIED_FAILED); + runInAction(() => config.searchSocketConnected = false); + } + } + + subscribe = (topic, process) => { + this.stompClient.subscribe(topic, process); + } + + send = (mapping, headers, data) => { + this.stompClient.send(mapping, headers, data); + } +} + + +export { FsSocketClient, TtySocketClient, SearchSocketClient } diff --git a/app/backendAPI/workspaceAPI.js b/app/backendAPI/workspaceAPI.js index ea92ac80..5bb03cff 100644 --- a/app/backendAPI/workspaceAPI.js +++ b/app/backendAPI/workspaceAPI.js @@ -1,10 +1,13 @@ import config from '../config' import { request } from '../utils' -import { FsSocketClient, TtySocketClient } from './websocketClients' +import { FsSocketClient, TtySocketClient, SearchSocketClient } from './websocketClients' let connectedResolve export const fsSocketConnectedPromise = new Promise((rs, rj) => connectedResolve = rs) +let searchConnectedResolve; +export const searchSocketConnectedPromise = new Promise((rs, rj) => searchConnectedResolve = rs); + export function isWorkspaceExist () { return request.get(`/workspaces/${config.spaceKey}`) .catch(() => false) @@ -19,6 +22,16 @@ export function createWorkspace (options) { return request.post('/workspaces', options) } +export function findSpaceKey ({ ownerName, projectName }) { + return request.get(`/ws/find/coding/${ownerName}/${projectName}`, null, + { headers: { Accept: '*/*' } } + ).then(res => res.data) +} + +export function getWorkspace (spaceKey = config.spaceKey) { + return request.get(`/workspaces/${spaceKey}`) +} + export function connectWebsocketClient () { return new Promise((resolve) => { const fsSocketClient = new FsSocketClient() @@ -31,6 +44,18 @@ export function connectWebsocketClient () { }) } +export function connectSearchWebsocketClient() { + return new Promise((resolve) => { + const searchSocketClient = new SearchSocketClient(); + searchSocketClient.successCallback = function(stompClient) { + searchConnectedResolve(stompClient); + resolve(true); + } + searchSocketClient.errorCallback = function(error) {} + searchSocketClient.connect(); + }) +} + export function closeWebsocketClient () { const fsSocketClient = new FsSocketClient() fsSocketClient.close() @@ -41,6 +66,11 @@ export function closeTtySocketClient () { ttySocketClient.close() } +export function closeSearchWebsocketClient() { + const searchSocketClient = new SearchSocketClient(); + searchSocketClient.close(); +} + export function getSettings () { return request.get(`/workspaces/${config.spaceKey}/settings?base64=false`).then(({ content = {} }) => JSON.parse(content)) } @@ -60,3 +90,7 @@ export function execShellCommand (command) { export function getWorkspaceList () { return request.get('/workspaces?page=0&size=5&sort=lastModifiedDate,desc') } + +export function createProject (options) { + return request.post('/projects', options, { headers: { Accept: '*/*' } }) +} diff --git a/app/changelog.html b/app/changelog.html new file mode 100644 index 00000000..93c15def --- /dev/null +++ b/app/changelog.html @@ -0,0 +1,871 @@ + + + + + + Cloud Studio - 开启云端开发模式 WebIDE + + + + + + + + + + + + + + + + +
+
+
+ +
+ 注册 + | + 登录 +
+ +
+
+
+ + + + + +
+ +
+
+
+
+ +
+
+
+
+
+
+ +
+
+

Cloud Studio 更新日志

+

+ 在团队的努力下,Cloud Studio 持续进行着快速的产品迭代,为开发者提供最好的云端开发体验。如果您对产品有任何意见与建议,欢迎随时反馈。 +

+
+
+
+
+
联系我们
+
+
+
电话
+
400-930-9163
+
+
+
邮箱
+ support@coding.net +
+
+
在线反馈
+ https://feedback.coding.net/ +
+
+
腾讯云开发者平台由腾讯云及 CODING 共同运营,目前由 CODING 团队提供运营服务。
+
+
+
+ + + +
+
+ + + + + + + + diff --git a/app/commands/CommandPalette/component.jsx b/app/commands/CommandPalette/component.jsx index 838a3669..039c3219 100644 --- a/app/commands/CommandPalette/component.jsx +++ b/app/commands/CommandPalette/component.jsx @@ -17,7 +17,7 @@ class CommandPalette extends Component { return (
this.setState({items: getPaletteItems(e.target.value)}) } onKeyDown={this._onKeyDown} diff --git a/app/commands/commandBindings/editor.js b/app/commands/commandBindings/editor.js index 8460aae1..1a75ebe4 100644 --- a/app/commands/commandBindings/editor.js +++ b/app/commands/commandBindings/editor.js @@ -22,4 +22,3 @@ export default { Pane.split(4, 'row') } } - diff --git a/app/commands/commandBindings/file.js b/app/commands/commandBindings/file.js index 2543a271..687b947a 100644 --- a/app/commands/commandBindings/file.js +++ b/app/commands/commandBindings/file.js @@ -2,14 +2,19 @@ import mobxStore from '../../mobxStore' import { path as pathUtil } from '../../utils' import api from '../../backendAPI' import * as Modal from '../../components/Modal/actions' +import uniqueId from 'lodash/uniqueId' import TabStore from 'components/Tab/store' -import FileState from 'commons/File/state' +import TabState from 'components/Tab/state' +import FileState, { extState } from 'commons/File/state' import FileStore from 'commons/File/store' -import { notify } from '../../components/Notification/actions' +import { notify, NOTIFY_TYPE } from '../../components/Notification/actions' import i18n from 'utils/createI18n' import icons from 'file-icons-js' +import config from 'config' import { toJS, when } from 'mobx' import emitter, { FILE_HIGHLIGHT } from 'utils/emitter' +import qs from 'qs' +import mime from 'mime-types' const nodeToNearestDirPath = (node) => { if (!node) node = { isDir: true, path: '/' } // fake a root node if !node @@ -44,67 +49,178 @@ function createFolderAtPath (path) { ) } - -export function openFile (obj, callback) { - if (!obj.path) return - // 做一些encoding的调度 - if (FileState.initData.get('_init')) { - when(() => !FileState.initData.get('_init'), () => { - const { encoding } = FileState.initData.get(obj.path) || {} - openFileWithEncoding({ ...obj, encoding, callback }) - FileState.initData.set(obj.path, {}) - }) +const getMIME = (path) => { + let contentType = mime.lookup(path); + if (contentType) { + const exts = ['php', 'javascript']; + exts.map (ext => { + if (contentType.includes(ext)) { + contentType = contentType.replace('application', 'text'); + } + }); } else { - const { encoding } = FileState.initData.get(obj.path) || {} - openFileWithEncoding({ ...obj, encoding, callback }) - FileState.initData.set(obj.path, {}) + contentType = 'text/plain' } + + return contentType; } -export function openFileWithEncoding ({ path, editor = {}, others = {}, allGroup = false, encoding, callback }) { - const { encoding: currentEncoding } = FileStore.get(path) || {} - return api.readFile(path, encoding || currentEncoding) - .then((data) => { - FileStore.loadNodeData(data) - return data - }) - .then(() => { - const activeTabGroup = TabStore.getState().activeTabGroup - const existingTabs = TabStore.findTab( - tab => tab.file && tab.file.path === path && (tab.tabGroup === activeTabGroup || allGroup) - ) - if (existingTabs.length) { - const existingTab = existingTabs[0] - if (editor.gitBlame) { - existingTab.editor.gitBlame = editor.gitBlame +const openUrlFile = (files) => { + // open file depends on url + + let fileArr = []; + if (files) { + fileArr = files.split(','); + + const baseOpen = (i) => { + if (i < fileArr.length) { + let path = fileArr[i] + if (!path.startsWith('/')) { + path = `/${path}`; } - existingTab.activate() - if (callback) callback() - } else { - TabStore.createTab({ - icon: icons.getClassWithColor(path.split('/').pop()) || 'fa fa-file-text-o', - editor: { - ...editor, - filePath: path, - }, - ...others - }) - if (callback) { - callback() + openFile({ + path, + contentType: getMIME(path) + }, () => { + i++ + baseOpen(i) + }); + } + } + + baseOpen(0); + } +} + +export function initOpenFile(tabs, tabGroups) { + when(() => !FileState.initData.get('_init'), () => { + const openedTabs = Object.values(TabState.tabs._data); + tabs = tabs.filter(tab => { + let flag = true; + for (let i = 0, n = openedTabs.length; i < n; i++) { + const cc = openedTabs[i]; + const path = cc.value.file ? cc.value.file.path : ''; + if (tab.path === path) { + flag = false; } } + if (flag) { + return tab; + } + }) + + tabs.map((tabValue) => { + const { path, editor, contentType, ...others } = tabValue + FileStore.loadNodeData({ ...tabValue, isEditorLoading: true }) + TabStore.createTab({ + icon: icons.getClassWithColor(path.split('/').pop()) || 'fa fa-file-text-o', + contentType, + editor: { + ...editor, + filePath: path, + }, + ...others, + }) + const { encoding } = FileState.initData.get(path) || {} + api.readFile(path, encoding).then(data => { + FileStore.loadNodeData({ ...data, isEditorLoading: false }) + FileState.initData.set(path, {}) + }) }) + + const files = qs.parse(window.location.search.slice(1)).open; + if (files) { + openUrlFile(files); + return; + } + + tabGroups.forEach((tabGroupsValue) => { + const activeTabId = tabGroupsValue.activeTabId + if (activeTabId ) { + const index = tabs.findIndex(tab => tab.id === activeTabId); + if (index >= 0) { + const { path, contentType } = tabs[index]; + openFile({ + path, + contentType + }); + } + } + }) + }) } -function createTab ({ icon, type }) { - TabStore.createTab({ - icon, - type, +export function openFile (obj, callback) { + const { path, contentType, editor = {}, others = {}, allGroup = false } = obj; + if (!path) return + const { encoding } = FileState.initData.get(path) || {} + const { encoding: currentEncoding } = FileStore.get(path) || {} + return api.readFile(path, encoding || currentEncoding).then((data) => { + FileStore.loadNodeData(data) + FileState.initData.set(path, {}) + for (const listener of extState.didOpenListeners) { + listener(FileState.entities.get(path)) + } + return data + }).then(() => { + const activeTabGroup = TabStore.getState().activeTabGroup + const existingTabs = TabStore.findTab( + tab => tab.file && tab.file.path === path && (tab.tabGroup === activeTabGroup || allGroup) + ) + if (existingTabs.length) { + const existingTab = existingTabs[0] + if (editor.gitBlame) { + existingTab.editor.gitBlame = editor.gitBlame + } + if (editor.selection) { + const { startLineNumber, startColumn } = editor.selection + + const pos = { + lineNumber: startLineNumber, + column: startColumn, + } + + setTimeout(() => { + existingTab.editorInfo.monacoEditor.setSelection(editor.selection) + existingTab.editorInfo.monacoEditor.revealPositionInCenter(pos, 1) + existingTab.editorInfo.monacoEditor.focus() + }, 0) + } + + if (editor.debug) { + existingTab.editorInfo.debug = true + existingTab.editorInfo.line = editor.line + existingTab.editorInfo.stoppedReason = editor.stoppedReason + existingTab.editorInfo.setDebugDeltaDecorations() + } + existingTab.activate() + if (callback) callback(existingTab.id) + } else { + const tabId = uniqueId('tab_') + TabStore.createTab({ + icon: icons.getClassWithColor(path.split('/').pop()) || 'fa fa-file-text-o', + contentType, + editor: { + ...editor, + filePath: path, + }, + id: tabId, + ...others, + }) + if (callback) { + callback(tabId) + } + } + }).catch(e => { + if (callback) { + callback(null); + } }) } function createFileWithContent (content) { return function createFileAtPath (path) { + path = path.startsWith('/') ? path : `/${path}` if (content) { return api.createFile(path, content) .then((res) => { @@ -137,10 +253,11 @@ function createFileWithContent (content) { throw new Error(res.msg) } else { Modal.dismissModal() + return res; } }) - .then(() => { - openFile({ path }) + .then(res => { + openFile({ path, contentType: res.contentType }) }) // if error, try again. .catch((res) => { @@ -165,7 +282,6 @@ const fileCommands = { } }, 'file:highlight_line': (c) => { - console.log('file:highlight_line', c) const { path, lineNumber } = c.data openFile({ path, allGroup: true }, () => { emitter.emit(FILE_HIGHLIGHT, c.data) @@ -198,8 +314,7 @@ const fileCommands = { 'file:save': (c) => { const { EditorTabState } = mobxStore const activeTab = EditorTabState.activeTab - const content = activeTab ? activeTab.editor.cm.getValue() : '' - + const content = activeTab.editorInfo.monacoEditor.getValue() if (!activeTab.file) { const createFile = createFileWithContent(content) const defaultPath = activeTab._title ? `/${activeTab._title}` : '/untitled' @@ -222,7 +337,22 @@ const fileCommands = { } }, - + 'file:save_monaco': (context) => { + const { data } = context + const { EditorTabState } = mobxStore + const activeTab = EditorTabState.activeTab + if (activeTab.file) { + api.writeFile(activeTab.file.path, data) + .then((res) => { + FileStore.updateFile({ + path: activeTab.file.path, + isSynced: true, + lastModified: res.lastModified, + // content, + }) + }) + } + }, 'file:rename': (c) => { const node = c.context const oldPath = node.path @@ -292,12 +422,84 @@ const fileCommands = { existingTab.activate() } else { TabStore.createTab({ - icon: 'fa fa-info-circle', + icon: 'fa fa-smile-o', type: 'welcome', title: 'Welcome', }) } }, + 'file:open_changelog': () => { + const existingTabs = TabStore.findTab( + tab => tab.type === 'changelog' + ) + if (existingTabs.length) { + const existingTab = existingTabs[0] + existingTab.activate() + } else { + TabStore.createTab({ + type: 'changelog', + title: 'Changelog', + }) + } + }, + 'file:open_about': () => { + Modal.showModal({ type: 'About', position: 'center' }) + }, + + 'file:add_ignore': (c) => { + const ignorePath = '/.gitignore' + const ignoreExists = FileStore.get(ignorePath) + + const { isDir, path } = c.context + const patchTxt = isDir ? `${path}/` : path + + if (ignoreExists) { + api.readFile(ignorePath) + .then(ignoreFile => { + const ignoreContent = ignoreFile.content + !ignoreContent.split('\n').some(item => patchTxt.startsWith(item)) ? + api.writeFile( + ignorePath, + ignoreFile.content ? `${ignoreFile.content}\n${patchTxt}` + : patchTxt + ) + .then(res => { + FileStore.updateFile({ + path: ignorePath, + isSynced: true, + lastModified: res.lastModified, + }) + + notify({ message: i18n`file.updateIgnoreSuccess` }) + openFile({ path: ignorePath }) + }) + .catch(err => { + notify({ + notifyType: NOTIFY_TYPE.ERROR, + message: i18n`file.updateIgnoreFailed${{err: err.msg}}` + }) + }) : notify({ message: i18n`file.updateIgnoreTip${{path}}` }) + }) + } else { + api.createFile(ignorePath, patchTxt) + .then((res) => { + if (res.msg) { + throw new Error(res.msg); + } + }) + .then(() => api.writeFile(ignorePath, patchTxt)) + .then(() => { + notify({ message: i18n`file.updateIgnoreSuccess` }) + openFile({ path: ignorePath }) + }) + .catch(err => { + notify({ + notifyType: NOTIFY_TYPE.ERROR, + message: i18n`file.updateIgnoreFailed${{err: err.msg}}` + }) + }) + } + } } export default fileCommands diff --git a/app/commands/commandBindings/git.js b/app/commands/commandBindings/git.js index d201c0a7..825e6a97 100644 --- a/app/commands/commandBindings/git.js +++ b/app/commands/commandBindings/git.js @@ -1,15 +1,28 @@ +import * as NotificationActions from 'components/Notification/actions' import store, { dispatch as $d } from '../../store' import api from '../../backendAPI' import * as Git from '../../components/Git/actions' import * as Modal from '../../components/Modal/actions' +import config from 'config' export default { + 'git:remote': () => { + Modal.showModal({ type: 'ResetRemote' }) + }, + 'git:initialize': () => { + api.gitInit() + .then((data) => { + NotificationActions.notify({ + message: data.msg + }) + }) + }, 'git:commit': (c) => { api.gitStatus().then(({ files, clean }) => { $d(Git.updateStatus({ files, isClean: clean })) - }).then(() => - Modal.showModal('GitCommit', 'HelloYo') - ) + }).then(() => { + Modal.showModal('GitCommitView') + }) }, 'git:pull': c => $d(Git.pull()), diff --git a/app/commands/commandBindings/misc.js b/app/commands/commandBindings/misc.js index db32cb88..009200e3 100644 --- a/app/commands/commandBindings/misc.js +++ b/app/commands/commandBindings/misc.js @@ -3,6 +3,7 @@ import * as Panel from 'components/Panel/actions' import * as SideBar from 'components/Panel/SideBar/actions' import terminalState from 'components/Terminal/state' import * as Terminal from 'components/Terminal/actions' +import * as searchState from 'commons/Search/state' const getComponentByName = name => window.refs[name].getWrappedInstance() export default { @@ -20,6 +21,12 @@ export default { 'global:show_branches': () => { getComponentByName('GitBranchWidget').toggleActive(true) }, + 'global:show_env': () => { + SideBar.toggleSidePanelView('SIDEBAR.RIGHT.env') + }, + 'global:show_search': () => { + SideBar.toggleSidePanelView('SIDEBAR.LEFT.find') + }, 'modal:dismiss': (c) => { Modal.dismissModal() }, diff --git a/app/commands/commandBindings/tab.js b/app/commands/commandBindings/tab.js index 1959bb74..34801d9f 100644 --- a/app/commands/commandBindings/tab.js +++ b/app/commands/commandBindings/tab.js @@ -5,15 +5,15 @@ import * as PaneActions from 'components/Pane/actions' export default { 'tab:close': (c) => { - Tab.removeTab(c.context.id) + Tab.removeTab(c.context) }, 'tab:close_other': (c) => { - Tab.removeOtherTab(c.context.id) + Tab.removeOtherTab(c.context) }, 'tab:close_all': (c) => { - Tab.removeAllTab(c.context.id) + Tab.removeAllTab(c.context) }, 'tab:split_v': (c) => { @@ -35,4 +35,36 @@ export default { Tab.moveTabToPane(c.context.id, newPaneId) ) }, + + 'tab:zenmode': () => { + const tab = document.querySelector('.tab-content-item.active'); + const datasetExt = tab.dataset.ext; + const ext = datasetExt && datasetExt.toLowerCase(); + if (['md', 'markdown', 'html'].includes(ext)) { + tab.classList.add('zenmode_preview'); + } else { + tab.classList.add('zenmode'); + } + if (tab.requestFullscreen) { + tab.requestFullscreen(); + } else if (tab.webkitRequestFullscreen) { + tab.webkitRequestFullscreen(); + } else if (tab.mozRequestFullScreen) { + tab.mozRequestFullScreen(); + } else if (tab.msRequestFullscreen) { + tab.msRequestFullscreen(); + } + } +} + +function exitFullScreen() { + const isFull = document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement; + if (!isFull) { + const tab = document.querySelector('.tab-content-item.active'); + tab.classList.remove('zenmode', 'zenmode_preview'); + } } +document.addEventListener('fullscreenchange', () => exitFullScreen()); +document.addEventListener('webkitfullscreenchange', () => exitFullScreen()); +document.addEventListener('mozfullscreenchange', () => exitFullScreen()); +document.addEventListener('msfullscreenchang', () => exitFullScreen()); diff --git a/app/commands/index.js b/app/commands/index.js index 5c9ca0a3..35fcb845 100644 --- a/app/commands/index.js +++ b/app/commands/index.js @@ -1,12 +1,17 @@ import { emitter } from 'utils' import Keymapper from './lib/keymapper' -import keymaps from './keymaps' +import { systemKeymaps, pluginsKeymaps } from './keymaps' import commandBindings from './commandBindings' +import { flattenKeyMaps } from './lib/helpers' import dispatchCommand, { setContext, addCommand } from './dispatchCommand' import { CommandPalette } from './CommandPalette' +// import { pluinKeymapsForPlatform } from './pluginsKeymaps' +export const key = new Keymapper({ dispatchCommand }) +key.loadKeymaps(systemKeymaps) -const key = new Keymapper({ dispatchCommand }) -key.loadKeymaps(keymaps) +pluginsKeymaps.forEach((keyConfig) => { + key.loadKeymaps(flattenKeyMaps(keyConfig.keymaps)) +}) Object.keys(commandBindings).map((commandType) => { emitter.on(commandType, commandBindings[commandType]) diff --git a/app/commands/keymaps.js b/app/commands/keymaps.js index a409d5e1..5ee926d4 100644 --- a/app/commands/keymaps.js +++ b/app/commands/keymaps.js @@ -1,67 +1,123 @@ +import i18n from 'utils/createI18n' +import { observable } from 'mobx' +import { flattenKeyMaps } from './lib/helpers' + // Unavailable shortcuts: shift / ctrl + (q|n|w|t|↹) const os = (navigator.platform.match(/mac|win|linux/i) || ['other'])[0].toLowerCase() -export const isMac = (os === 'mac') +export const isMac = os === 'mac' -let keymaps -let modifierKeysMap -if (isMac) { - keymaps = { - 'alt+n': 'file:new_file', - 'alt+shift+n': 'file:new_folder', - 'cmd+s': 'file:save', - 'cmd+ctrl+c': 'git:commit', - 'esc': 'modal:dismiss', - 'cmd+shift+p': 'global:command_palette', - 'cmd+p': 'global:file_palette', - 'cmd+alt+1': 'editor:split_pane_1', - 'cmd+alt+shift+1': 'editor:split_pane_1', - 'cmd+alt+2': 'editor:split_pane_vertical_2', - 'cmd+alt+shift+2': 'editor:split_pane_horizontal_2', - 'cmd+alt+3': 'editor:split_pane_vertical_3', - 'cmd+alt+shift+3': 'editor:split_pane_horizontal_3', - 'cmd+alt+4': 'editor:split_pane_vertical_4', - 'cmd+,': 'global:show_settings', - 'ctrl+g': 'editor:goto', - 'alt+l': 'edit:toggle_format', - 'cmd+/': 'edit:toggle_comment', - } - modifierKeysMap = { +export const modifierKeysMap = isMac + ? { ctrl: '⌃', alt: '⌥', cmd: '⌘', - shift: '⇧', + shift: '⇧' } -} else { - keymaps = { - 'alt+n': 'file:new_file', - 'alt+shift+n': 'file:new_folder', - 'ctrl+s': 'file:save', - 'ctrl+alt+c': 'git:commit', - 'esc': 'modal:dismiss', - 'ctrl+shift+p': 'global:command_palette', - 'ctrl+p': 'global:file_palette', - 'ctrl+alt+1': 'editor:split_pane_1', - 'ctrl+alt+shift+1': 'editor:split_pane_1', - 'ctrl+alt+2': 'editor:split_pane_vertical_2', - 'ctrl+alt+shift+2': 'editor:split_pane_horizontal_2', - 'ctrl+alt+3': 'editor:split_pane_vertical_3', - 'ctrl+alt+shift+3': 'editor:split_pane_horizontal_3', - 'ctrl+alt+4': 'editor:split_pane_vertical_4', - 'alt+,': 'global:show_settings', - 'ctrl+g': 'editor:goto', - 'alt+l': 'edit:toggle_format', - 'ctrl+/': 'edit:toggle_comment', - } - modifierKeysMap = { + : { ctrl: 'Ctrl', alt: 'Alt', cmd: 'Cmd', - shift: 'Shift', + shift: 'Shift' } -} -export default keymaps +const keymapStore = observable({ + systemKeymaps: [ + { + command: 'file:new_file', + mac: 'alt+n', + win: 'alt+n', + label: i18n`settings.keymap.createFile` + }, + { + command: 'file:new_folder', + mac: 'alt+shift+n', + win: 'alt+shift+n', + label: i18n`settings.keymap.createFolder` + }, + { + command: 'file:save', + mac: 'cmd+s', + win: 'ctrl+s', + label: i18n`settings.keymap.saveFile` + }, + { + command: 'modal:dismiss', + mac: 'esc', + win: 'esc', + label: i18n`settings.keymap.exitModal` + }, + { + command: 'git:commit', + mac: 'cmd+ctrl+c', + win: 'ctrl+alt+c', + label: i18n`settings.keymap.gitCommit` + }, + { + command: 'global:command_palette', + mac: 'cmd+shift+p', + win: 'ctrl+shift+p', + label: i18n`settings.keymap.commandPalette` + }, + { + command: 'global:file_palette', + mac: 'cmd+p', + win: 'ctrl+p', + label: i18n`settings.keymap.filePalette` + }, + { + command: 'global:show_settings', + mac: 'cmd+,', + win: 'alt+,', + label: i18n`settings.keymap.showSettings` + }, + { + command: 'editor:goto', + mac: 'cmd+g', + win: 'ctrl+g', + label: i18n`file.goto` + }, + { + command: 'edit:toggle_format_monaco', + mac: 'alt+l', + win: 'alt+l', + label: i18n`settings.keymap.toggleFormat` + }, + { + command: 'edit:toggle_monaco_comment', + mac: 'cmd+/', + win: 'ctrl+/', + label: i18n`settings.keymap.toggleComment` + }, + { + command: 'tab:zenmode', + mac: 'cmd+f11', + win: 'ctrl+f11', + label: i18n`settings.keymap.into_zenmode` + }, + { + command: 'global:show_search', + mac: 'cmd+shift+f', + win: 'ctrl+shift+f', + label: i18n`settings.keymap.search` + } + ], + pluginsKeymaps: [], +}) -export { - modifierKeysMap +export default keymapStore + +export const systemKeymaps = flattenKeyMaps(keymapStore.systemKeymaps) + +export const pluginsKeymaps = keymapStore.pluginsKeymaps + +export function getFlattenAllKeymaps () { + return { + ...flattenKeyMaps(keymapStore.systemKeymaps), + ...flattenKeyMaps( + keymapStore.pluginsKeymaps.map(km => km.keymaps).reduce((pre, cur) => { + pre = [...pre, ...cur] + return pre + }, []) + ) + } } diff --git a/app/commands/lib/helpers.js b/app/commands/lib/helpers.js index 60f2dfd3..b90821a9 100644 --- a/app/commands/lib/helpers.js +++ b/app/commands/lib/helpers.js @@ -1,6 +1,9 @@ const keycodes = require('./keycodes') const MODIFIERS_LIST = ['meta', 'ctrl', 'shift', 'alt'] +const os = (navigator.platform.match(/mac|win|linux/i) || ['other'])[0].toLowerCase() +export const isMac = (os === 'mac') + export function keyEventToKeyCombination (e, combinator) { // ensure comb always in the order spec by MODIFIERS_LIST const modString = MODIFIERS_LIST.filter(mod => e[`${mod}Key`]).join(combinator) @@ -30,3 +33,15 @@ export function normalizeKeys (keys, combinator='+', delimiter=' ') { }) .join(delimiter) } + +export function flattenKeyMaps (keymaps) { + return keymaps.reduce((pre, cur) => { + const { mac, win, command } = cur + if (isMac) { + pre[mac] = command + } else { + pre[win] = command + } + return pre + }, {}) +} diff --git a/app/commands/lib/keymapper.js b/app/commands/lib/keymapper.js index 54967971..5fea6bba 100644 --- a/app/commands/lib/keymapper.js +++ b/app/commands/lib/keymapper.js @@ -6,14 +6,27 @@ Mousetrap.prototype.stopCallback = function () { return false } class Keymapper { constructor ({ dispatchCommand }) { this.dispatchCommand = dispatchCommand + this.keyStore = [] } loadKeymaps (keymaps) { Object.entries(keymaps).map(([keycombo, commandType]) => { - Mousetrap.bind(normalizeKeys(keycombo), (e) => { - this.dispatchCommand(commandType) - e.preventDefault(); e.stopPropagation() - }) + if (!this.keyStore.includes(keycombo)) { + this.keyStore.push(keycombo) + Mousetrap.bind(normalizeKeys(keycombo), (e) => { + this.dispatchCommand(commandType) + e.preventDefault(); e.stopPropagation() + }) + } + }) + } + + unbindKeymaps (keymaps) { + Object.entries(keymaps).map(([keycombo]) => { + if (this.keyStore.includes(keycombo)) { + this.keyStore = this.keyStore.filter((key) => key !== keycombo) + } + Mousetrap.unbind(normalizeKeys(keycombo)) }) } } diff --git a/app/commands/pluginsKeymaps.js b/app/commands/pluginsKeymaps.js new file mode 100644 index 00000000..483aa234 --- /dev/null +++ b/app/commands/pluginsKeymaps.js @@ -0,0 +1,22 @@ +import { flatten } from 'lodash' +import { flattenKeyMaps } from './lib/helpers' +/** + * ```typescript + * interface IKeyMaps { + * command: string; + * mac: string; + * win: string; + * } + * interface IPluginKeyMaps { + * name: string; + * keymaps: Array; + * } + * ``` + */ + +let pluginsKeymaps = [] + +const allKeymaps = flatten(pluginsKeymaps.map((km) => km.keymaps)) +export const pluinKeymapsForPlatform = flattenKeyMaps(allKeymaps) + +export default pluginsKeymaps diff --git a/app/commons/File/actions.js b/app/commons/File/actions.js index 93abe82c..e3052e11 100644 --- a/app/commons/File/actions.js +++ b/app/commons/File/actions.js @@ -1,41 +1,107 @@ import flattenDeep from 'lodash/flattenDeep' import { registerAction } from 'utils/actions' +import settings from 'settings' import is from 'utils/is' -import { action, when } from 'mobx' import api from 'backendAPI' +import config from 'config' +import { showModal } from 'components/Modal/actions' +import { fetchLanguageServerSetting } from 'backendAPI/languageServerAPI' +import { findLanguagesByFileList } from 'components/MonacoEditor/utils/findLanguage' import state, { FileNode } from './state' export function fetchPath (path) { - return api.fetchPath(path).then(nodePropsList => Promise.all(nodePropsList.map((nodeProps) => { - if (nodeProps.isDir && nodeProps.directoriesCount === 1 && nodeProps.filesCount === 0) { - return fetchPath(nodeProps.path).then(data => [nodeProps].concat(data)) + return api.fetchPath(path).then(nodePropsList => + Promise.all( + nodePropsList.map((nodeProps) => { + if (nodeProps.isDir && nodeProps.directoriesCount === 1 && nodeProps.filesCount === 0) { + return fetchPath(nodeProps.path).then(data => [nodeProps].concat(data)) + } + return Promise.resolve(nodeProps) + }) + ).then(flattenDeep) + ) +} + +export const loadNodeData = registerAction('fs:load_node_data', (nodePropsList) => { + if (!is.array(nodePropsList)) nodePropsList = [nodePropsList] + return nodePropsList.map((nodeProps) => { + const curNode = state.entities.get(nodeProps.path) + if (curNode) { + const curNodeTime = new Date(curNode.lastModified) + const newNodeTime = new Date(nodeProps.lastModified) + if (newNodeTime.getTime() > curNodeTime.getTime() || !curNodeTime.content) { + curNode.update(nodeProps) + } + return curNode + } + const newNode = new FileNode(nodeProps) + state.entities.set(newNode.path, newNode) + return newNode + }) +}) + +function tryIdentificationWorkSpaceType (files) { + return new Promise(async (resolve, _) => { + const types = findLanguagesByFileList(files) + .map(type => ({ srcPath: '/', type })) + if (!types || types.length === 0) { + Promise.all( + files.filter(file => file.isDir) + .map(async (task) => { + const result = await api.fetchPath(task.path) + const subTypes = findLanguagesByFileList(result) + .map(type => ({ srcPath: task.path, type })) + return Promise.resolve(subTypes) + }) + ) + .then((langSettings) => { + resolve(flattenDeep(langSettings.filter(type => type.length > 0))) + }) + } else { + resolve(types) } - return Promise.resolve(nodeProps) - })).then(flattenDeep)) + }) } -export const loadNodeData = registerAction('fs:load_node_data', - (nodePropsList) => { - if (!is.array(nodePropsList)) nodePropsList = [nodePropsList] - return nodePropsList.map((nodeProps) => { - const curNode = state.entities.get(nodeProps.path) - if (curNode) { - const curNodeTime = new Date(curNode.lastModified) - const newNodeTime = new Date(nodeProps.lastModified) - if (newNodeTime.getTime() > curNodeTime.getTime() || !curNodeTime.content) { - curNode.update(nodeProps) - } - return curNode +const setLanguageSetting = (data) => { + if (data.length > 1) { + showModal({ type: 'ProjectTypeSelector', position: 'center', data }) + } else if (data.length === 1) { + const { type, srcPath } = data[0] + config.mainLanguage = type + settings.languageserver.projectType.value = type + settings.languageserver.sourcePath.value = srcPath + } +} + +const fetchPackageJsonFile = () => { + api.readFile('/package.json') + .then(res => { + const content = JSON.parse(res.content) + if (content && content.codingIdePackage && content.codingIdePackage.type === 'plugin') { + config.__PLUGIN_DEV__ = true } - const newNode = new FileNode(nodeProps) - state.entities.set(newNode.path, newNode) - return newNode }) - } -) +} export const fetchProjectRoot = registerAction('fs:init', () => - fetchPath('/').then(loadNodeData) + fetchPath('/').then((data) => { + /** + * 插件工作空间判断 + */ + if (data.find(file => file.path === '/package.json')) { + fetchPackageJsonFile() + } + fetchLanguageServerSetting(config.spaceKey).then((res) => { + if (res.code === 0 && res.data) { + setLanguageSetting([res.data]) + } else { + tryIdentificationWorkSpaceType(data) + .then(setLanguageSetting) + } + }) + return loadNodeData(data) + }) ) export const removeNode = registerAction('fs:remove_node', (node) => { @@ -66,5 +132,10 @@ export const syncFile = registerAction('fs:sync', (params) => { encoding = params.encoding } const fileNode = state.entities.get(path) - if (!fileNode.isDir) return api.readFile(path, encoding).then(loadNodeData).then(files => files[0]) + if (!!fileNode && !fileNode.isDir) { + return api + .readFile(path, encoding) + .then(loadNodeData) + .then(files => files[0]) + } }) diff --git a/app/commons/File/state.js b/app/commons/File/state.js index f5817a59..c6d1fe02 100644 --- a/app/commons/File/state.js +++ b/app/commons/File/state.js @@ -1,5 +1,5 @@ import _ from 'lodash' -import { createTransformer, toJS, extendObservable, observable, computed, action } from 'mobx' +import { createTransformer, toJS, extendObservable, observable, computed, action, when } from 'mobx' import config from 'config' import { syncFile } from './actions' @@ -22,6 +22,12 @@ const state = observable({ }, }) +// for plugin +const extState = observable({ + createdListeners: [], + didOpenListeners: [], +}) + // state.entities.intercept((change) => { // console.log(change) // if (change.type === 'add') { @@ -43,6 +49,12 @@ class FileNode { }) } state.entities.set(this.path, this) + // 文件创建钩子 + if (extState.createdListeners && extState.createdListeners.length > 0) { + for (const createdListener of extState.createdListeners) { + createdListener(this) + } + } } @action @@ -57,6 +69,7 @@ class FileNode { @observable isSynced = true @observable gitStatus = 'NONE' @observable size = 0 + @observable isEditorLoading = false @observable _name = undefined @computed @@ -139,10 +152,18 @@ class FileNode { state.entities.set(ROOT_PATH, new FileNode({ path: ROOT_PATH, - name: config.projectName, + name: (config.workspaceName === 'default' ? config.projectName : config.workspaceName) || 'Home', isDir: true, })) +when(() => config.workspaceName || config.projectName, () => { + state.entities.set(ROOT_PATH, new FileNode({ + path: ROOT_PATH, + name: config.workspaceName === 'default' ? config.projectName : config.workspaceName, + isDir: true, + })) +}) + function hydrate (json) { const { entities } = json // hydrate encodings @@ -155,4 +176,4 @@ function hydrate (json) { } export default state -export { state, FileNode, hydrate } +export { state, FileNode, hydrate, extState } diff --git a/app/commons/File/subscribeToFileChange.js b/app/commons/File/subscribeToFileChange.js index 45e58418..41ab862c 100644 --- a/app/commons/File/subscribeToFileChange.js +++ b/app/commons/File/subscribeToFileChange.js @@ -1,6 +1,6 @@ import config from 'config' import api from 'backendAPI' -import emitter, { FILE_CHANGE } from 'utils/emitter' +import emitter, { FILE_CHANGE, OFFLINE_WS_SYSTEM } from 'utils/emitter' import { autorun } from 'mobx' import { FsSocketClient } from 'backendAPI/websocketClients' import store, { getState, dispatch } from 'store' @@ -59,6 +59,9 @@ export default function subscribeToFileChange () { client.subscribe(`/topic/ws/${config.spaceKey}/change`, (frame) => { const data = JSON.parse(frame.body) const node = data.fileInfo + if (node.name.startsWith('.nfs000')) { + return + } emitter.emit(FILE_CHANGE, data) switch (data.changeType) { case 'create': @@ -99,5 +102,13 @@ export default function subscribeToFileChange () { const data = JSON.parse(frame.body) dispatch(GitActions.updateCurrentBranch({ name: data.branch })) }) + + client.subscribe(`/topic/ws/${config.spaceKey}/system`, (frame) => { + const data = frame.body; + if (data === 'quit') { + api.closeWebsocketClient() + emitter.emit(OFFLINE_WS_SYSTEM) + } + }) }) } diff --git a/app/commons/Menu/state.js b/app/commons/Menu/state.js index 9679c743..457f8d13 100644 --- a/app/commons/Menu/state.js +++ b/app/commons/Menu/state.js @@ -1,19 +1,18 @@ -import React from 'react' import { observable, extendShallowObservable } from 'mobx' -import keyMapConfig, { modifierKeysMap } from 'commands/keymaps' +import { modifierKeysMap, getFlattenAllKeymaps } from 'commands/keymaps' -const findKeyByValue = value => Object - .keys(keyMapConfig) - .reduce((p, v) => { - p[keyMapConfig[v]] = v +function MenuScope (defaultMenuItems = []) { + const findKeyByValue = value => + Object.keys(getFlattenAllKeymaps()).reduce((p, v) => { + p[getFlattenAllKeymaps()[v]] = v return p }, {})[value] || '' -const withModifierKeys = value => value.split('+') - .map(e => modifierKeysMap[e] || e.toUpperCase()).join('') - - -function MenuScope (defaultMenuItems=[]) { + const withModifierKeys = value => + value + .split('+') + .map(e => modifierKeysMap[e] || e.toUpperCase()) + .join('') class MenuItem { constructor (opts) { @@ -28,7 +27,7 @@ function MenuScope (defaultMenuItems=[]) { return this.items.reduce((acc, item) => { if (item.key) acc[item.key] = item }, {}) - }, + } }) // case 'key': // case 'name': @@ -43,7 +42,7 @@ function MenuScope (defaultMenuItems=[]) { }) return extendShallowObservable(this, { get shortcut () { - return withModifierKeys(findKeyByValue(this.command)) + return withModifierKeys(findKeyByValue(this.cmd || this.command)) } }) } diff --git a/app/commons/Search/action.js b/app/commons/Search/action.js new file mode 100644 index 00000000..5334b4af --- /dev/null +++ b/app/commons/Search/action.js @@ -0,0 +1,62 @@ +import * as api from 'backendAPI/searchAPI' +import state from './state' + +function searchUp() { + if(!state.ws.status) { + state.ws.name = spaceKey; + api.searchWorkspaceUp(); + } +} + +function searchDown() { + if(state.ws.status) { + api.searchWorkspaceDown(); + } +} + +function searchStatus() { + api.searchWorkspaceStatus(); +} + +function searchString() { + if(state.ws.status) { + commonSearch(); + api.searchString(state.searching, state.searched.randomKey); + } +} + +function searchPattern() { + if(state.ws.status) { + commonSearch(); + api.searchPattern(state.searching, state.searched.randomKey); + } +} + +function commonSearch() { + // if(!state.searched.end && !state.ws.first) { + // // api.searchInterrupt(state.searched.taskId); + // } + if(state.searched.taskId != null) { + state.searched.former.taskId = state.searched.taskId + state.searched.former.results = state.searched.results.splice(0, state.searched.results.length); + state.searched.taskId = '' + } + state.searched.taskId = '' + state.searched.pattern = state.searching.isPattern + state.searched.message = '' + state.searched.end = false + state.searched.randomKey = randomForOne() +} + +function searchInterrupt() { + if(state.ws.status + && !state.searched.end) { + api.searchInterrupt(state.searched.taskId); + } +} + +function randomForOne() { + return Math.random().toString(36) +} + +export { searchUp, searchDown, searchStatus, searchString, searchPattern, searchInterrupt } \ No newline at end of file diff --git a/app/commons/Search/state.js b/app/commons/Search/state.js new file mode 100644 index 00000000..943f4ef8 --- /dev/null +++ b/app/commons/Search/state.js @@ -0,0 +1,37 @@ +import { observable, map } from 'mobx' + +export const ws = observable({ + name: '', + status: false, + first: true +}) + +export const searching = observable({ + pattern: '', + path: '', + caseSensitive: false, + word: false, + isPattern: false, + singleFork: false, +}) + +export const searched = observable({ + taskId: '', + randomKey: '', + pattern: false, + message: '', + results: [], + end: false, + former: { + taskId: '', + results: [] + } +}) + +const state = { + ws, + searching, + searched +} + +export default state; \ No newline at end of file diff --git a/app/commons/Search/subscribeToSearch.js b/app/commons/Search/subscribeToSearch.js new file mode 100644 index 00000000..dee08289 --- /dev/null +++ b/app/commons/Search/subscribeToSearch.js @@ -0,0 +1,153 @@ +import { SearchSocketClient } from 'backendAPI/websocketClients' +import { autorun } from 'mobx' +import state from './state' +import * as api from 'backendAPI/searchAPI' +import debounce from 'lodash/debounce' + + +export default function subscribeToSearch() { + autorun(() => { + + if (!config.searchSocketConnected) return + const client = SearchSocketClient.$$singleton.stompClient + + // workspace up + client.subscribe('/user/topic/ws/up', response => { + let result = JSON.parse(response.body); + editWsStatus(result, 'UP'); + }); + + // workspace down + client.subscribe('/user/topic/ws/down', response => { + let result = JSON.parse(response.body); + editWsStatus(result, 'DOWN'); + }); + + // workspace status + client.subscribe('/user/topic/ws/status', response => { + let result = JSON.stringify(response.body); + if(result) { + switch(result) { + case 'UP': + state.ws.status = true; + break + case 'DOWN': + state.ws.status = false; + break + case 'NULL': + } + } + }); + + // search string + client.subscribe('/user/topic/search/string', response => { + formatSearch(response, false); + }); + + // search pattern + client.subscribe('/user/topic/search/pattern', response => { + formatSearch(response, true); + }); + + // single result + client.subscribe('/user/topic/search/single', response => { + let result = JSON.parse(response.body); + if(result == null) { + return ; + } + setData(result); + }); + + // multi result + client.subscribe('/user/topic/search/join', response => { + let results = JSON.parse(response.body); + if(results == null) { + return ; + } + setData(results); + }); + + // error + client.subscribe('/user/topic/search/error', response => { + let results = JSON.parse(response.body); + if(results == null) { + return ; + } + if(result.randomKey === state.searched.randomKey) { + state.searched.message = results.message; + } + }); + + // end result + client.subscribe('/user/topic/search/end', response => { + end(response) + }); + + // modify workspace status to up and init workspace files in mem + api.searchWorkspaceUp(); + + }) +} + +// end +const end = debounce((response) => { + let result = JSON.parse(response.body); + if(result == null) { + return ; + } + if(result.randomKey === state.searched.randomKey) { + state.searched.end = true; + } + }, 500) + +function setData(result) { + if(result.randomKey === state.searched.randomKey) { + if(result.joinResultMessage) { + let {joinResultMessage: searchChunk} = result; + for(let chunk of searchChunk) { + state.searched.results.push(chunk); + } + } else if(result.singleResultMessage) { + let {singleResultMessage: searchChunk} = result; + state.searched.results.push(searchChunk); + } + } +} + +function editWsStatus(result, wsStatus) { + if(result == null) { + return ; + } + if(result.code == 0 || result.code == 2) { + switch(wsStatus) { + case 'UP': + config.searchWsStatus = true; + state.ws.status = true; + break; + case 'DOWN': + config.searchWsStatus = false; + state.ws.status = false; + break; + } + } else if(result.code == 1) { + console.log(result.message); + } +} + +function formatSearch(response, isPattern) { + let result = JSON.parse(response.body); + if(result == null) { + return ; + } + if(result.randomKey && result.randomKey === state.searched.randomKey) { + if(result.message) { + state.searched.message = result.message + state.searched.end = true + } else { + state.searched.taskId = result.taskId; + state.searched.isPattern = isPattern; + state.searched.message = ''; + state.searched.end = false; + } + } +} \ No newline at end of file diff --git a/app/commons/Tab/TabBar.jsx b/app/commons/Tab/TabBar.jsx index 70eaea38..969defb9 100644 --- a/app/commons/Tab/TabBar.jsx +++ b/app/commons/Tab/TabBar.jsx @@ -1,6 +1,5 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' -import cx from 'classnames' import { observer } from 'mobx-react' import { dnd } from 'utils' import { defaultProps } from 'utils/decorators' @@ -8,7 +7,10 @@ import TabLabel from './TabLabel' import Menu from 'components/Menu' import ContextMenu from 'components/ContextMenu' import i18n from 'utils/createI18n' - +import * as SideBar from 'components/Panel/SideBar/actions' +import config from 'config' +import * as Panel from 'components/Panel/actions' +import panelState from 'components/Panel/state' @defaultProps(props => ({ addTab: () => props.tabGroup.addTab(), @@ -20,6 +22,8 @@ class TabBar extends Component { contextMenuItems: PropTypes.array.isRequired, addTab: PropTypes.func, closePane: PropTypes.func, + fullScreenActiveContent: PropTypes.bool, + handleFullScreen: PropTypes.func, }; constructor (props) { @@ -37,18 +41,27 @@ class TabBar extends Component { tabGroup, addTab, contextMenuItems, + fullScreenActiveContent, + handleFullScreen, } = this.props const tabBarId = `tab_bar_${tabGroup.id}` + const size = panelState.panels.get('PANEL_BOTTOM').size + return (
    {tabGroup.tabs.map(tab => - + )}
{dnd.target.id === tabBarId ?
: null} @@ -57,12 +70,29 @@ class TabBar extends Component {
+
+ {(!config.isPad || tabGroup.id !== 'terminalGroup') + &&
{ + e.stopPropagation() + this.setState({ showDropdownMenu: !this.state.showDropdownMenu }) + }} + > + + {this.renderDropdownMenu(size)} +
} + {tabGroup.id === 'terminalGroup' &&
{ e.stopPropagation(); this.setState({ showDropdownMenu: true }) }} + style={{ marginBottom: size ? '4px' : '-6px' }} + onClick={e => { + e.stopPropagation() + !size ? Panel.expandPanel('PANEL_BOTTOM') + : Panel.shrinkPanel('PANEL_BOTTOM') + }} > - - {this.renderDropdownMenu()} -
+ +
} this.setState({ showDropdownMenu: false })} />) } diff --git a/app/commons/Tab/TabContent.jsx b/app/commons/Tab/TabContent.jsx index 9af96bc2..dd1f3da7 100644 --- a/app/commons/Tab/TabContent.jsx +++ b/app/commons/Tab/TabContent.jsx @@ -10,11 +10,12 @@ export const TabContent = ({ children }) => ( ) export const TabContentItem = observer(({ tab, children }) => { + const ext = tab.title && tab.title.split('.')[1]; if (tab.isActive && tab.onActive) { tab.onActive() } return ( -
+
{children}
) @@ -23,4 +24,3 @@ export const TabContentItem = observer(({ tab, children }) => { TabContentItem.propTypes = { tab: PropTypes.object.isRequired, } - diff --git a/app/commons/Tab/TabLabel.jsx b/app/commons/Tab/TabLabel.jsx index 752bd19f..4f872516 100644 --- a/app/commons/Tab/TabLabel.jsx +++ b/app/commons/Tab/TabLabel.jsx @@ -5,29 +5,114 @@ import { observer } from 'mobx-react' import { dnd } from 'utils' import { defaultProps } from 'utils/decorators' import { dispatch } from '../../store' +import * as Modal from '../../components/Modal/actions' +import config from 'config' +import dispatchCommand from 'commands/dispatchCommand' +import { fileIconProviders } from 'components/FileTree/state' +import { gtouchstart, gtouchend, gtouchmove } from 'utils/touch' -let TabLabel = observer(({tab, removeTab, activateTab, openContextMenu}) => { +const closeFileTab = async (e, tab, removeTab, activateTab) => { + e.stopPropagation() + if (tab.tabGroupId === 'terminalGroup') { + removeTab(tab.id) + return + } + activateTab(tab.id) + const editor = tab.editorInfo.monacoEditor + + const content = (editor && editor.getValue) ? editor.getValue() : '' + + if (!tab.file && content && tab.editorInfo.uri.includes('inmemory')) { + const confirmed = await Modal.showModal('Confirm', { + header: i18n`file.saveNew`, + message: i18n`file.newInfo`, + }) + if (confirmed) { + Modal.dismissModal() + dispatchCommand('file:save') + } else { + Modal.dismissModal() + removeTab(tab.id) + } + } else { + removeTab(tab.id) + } +} + +const TabIcon = observer(({ fileName, defaultIconStr }) => { + const provider = fileIconProviders.get(config.fileicons) + const fileIconsProvider = typeof provider === 'function' ? provider() : provider + if (fileIconsProvider && fileIconsProvider.fileicons) { + const { icons: allicons, fileicons: fileiconsMap } = fileIconsProvider + if (!fileiconsMap.icons || fileiconsMap.icons.length === 0) { + return () + } + let fileiconName = fileiconsMap.defaultIcon + const extension = fileName.split('.').pop() + for (let i = 0; i < fileiconsMap.icons.length; i += 1) { + const fileicon = fileiconsMap.icons[i] + if ((fileicon.fileNames && fileicon.fileNames.includes(fileName)) || (fileicon.fileExtensions && fileicon.fileExtensions.includes(extension))) { + fileiconName = fileicon.name + break + } + } + return ( + + ) + } + return
+}) + +let TabLabel = observer(({ tab, removeTab, activateTab, openContextMenu, dbClickHandler }) => { const tabLabelId = `tab_label_${tab.id}` return (
  • activateTab(tab.id)} + onClick={e => { activateTab(tab.id) }} + onMouseUp={e => { e.button === 1 && removeTab(tab.id) }} + onDoubleClick={() => { + if (!tab.isActive) { + activateTab(tab.id) + } + dbClickHandler() + }} onDragStart={e => { // Chrome 下直接执行 dragStart 会导致立即又出发了 window.dragend, 添加 timeout 以避免无法拖动的情况 setTimeout(() => dnd.dragStart({ type: 'TAB', id: tab.id }), 0) }} - onContextMenu={e => openContextMenu(e, tab)} + onContextMenu={e => config.isPad ? '' : openContextMenu(e, tab)} + onTouchStart={e => { + e.persist() + gtouchstart(() => { openContextMenu(e, tab) }) + }} + onTouchEnd={gtouchend} + onTouchMove={gtouchmove} > - {dnd.target.id === tabLabelId ?
    : null} - {tab.icon ?
    : null} + {dnd.target.id === tabLabelId ?
    : null} + {tab.icon && }
    {tab.title}
    - { e.stopPropagation(); removeTab(tab.id) }}>× + closeFileTab(e, tab, removeTab, activateTab)}>×
  • @@ -39,6 +124,7 @@ TabLabel.propTypes = { removeTab: PropTypes.func.isRequired, activateTab: PropTypes.func.isRequired, openContextMenu: PropTypes.func.isRequired, + dbClickHandler: PropTypes.func.isRequired, } TabLabel = defaultProps(props => ({ diff --git a/app/commons/Tab/state.js b/app/commons/Tab/state.js index d6260df4..5da9f819 100644 --- a/app/commons/Tab/state.js +++ b/app/commons/Tab/state.js @@ -32,54 +32,55 @@ function TabScope () { class Tab { - @observable _title = i18n.get('tab.makeDropdownMenuItems.untitledTab') - @computed - get title () { return this._title } - set title (v) { return this._title = v } - - @observable index = 0 - @observable tabGroupId = '' - @observable flags = {} + @observable _title = i18n.get('tab.makeDropdownMenuItems.untitledTab') + @computed + get title () { return this._title } + set title (v) { return this._title = v } + + @observable index = 0 + @observable tabGroupId = '' + @observable flags = {} + @observable type = '' + + @computed get tabGroup () { + return state.tabGroups.get(this.tabGroupId) + } - @computed get tabGroup () { - return state.tabGroups.get(this.tabGroupId) - } + @computed get isActive () { + return this.tabGroup && this.tabGroup.activeTab === this + } - @computed get isActive () { - return this.tabGroup && this.tabGroup.activeTab === this - } + @computed get siblings () { + return this.tabGroup.tabs + } - @computed get siblings () { - return this.tabGroup.tabs - } + @computed get next () { + return this.siblings[this.index + 1] + } - @computed get next () { - return this.siblings[this.index + 1] - } + @computed get prev () { + return this.siblings[this.index - 1] + } - @computed get prev () { - return this.siblings[this.index - 1] - } + getAdjacent (checkNextFirst) { + const adjacent = checkNextFirst ? + (this.next || this.prev) : (this.prev || this.next) + return adjacent + } - getAdjacent (checkNextFirst) { - const adjacent = checkNextFirst ? - (this.next || this.prev) : (this.prev || this.next) - return adjacent + @action activate () { + this.tabGroup.activeTabId = this.id + this.tabGroup.activate() } - @action activate () { - this.tabGroup.activeTabId = this.id - this.tabGroup.activate() - } - - @action destroy () { - if (state.tabs.size === 1 && state.keepOne) { - return + @action destroy () { + if (state.tabs.size === 1 && state.keepOne) { + return + } + this.tabGroup.removeTab(this) + state.tabs.delete(this.id) } - this.tabGroup.removeTab(this) - state.tabs.delete(this.id) } -} autorun(() => { state.tabGroups.forEach((tabGroup) => { @@ -93,106 +94,106 @@ function TabScope () { class TabGroup { static Tab = Tab; - @observable activeTabId = null + @observable activeTabId = null - @computed get tabs () { - return state.tabs.values() - .filter(tab => tab.tabGroupId === this.id) - .sort((a, b) => a.index - b.index) - } + @computed get tabs () { + return state.tabs.values() + .filter(tab => tab.tabGroupId === this.id) + .sort((a, b) => a.index - b.index) + } - @computed get activeTab () { - const activeTab = state.tabs.get(this.activeTabId) - if (activeTab && activeTab.tabGroupId === this.id) { - return activeTab - } else if (this.tabs.length > 0) { - return this.tabs[0] + @computed get activeTab () { + const activeTab = state.tabs.get(this.activeTabId) + if (activeTab && activeTab.tabGroupId === this.id) { + return activeTab + } else if (this.tabs.length > 0) { + return this.tabs[0] + } + return null } - return null - } - @computed get siblings () { - return state.tabGroups.values() - } + @computed get siblings () { + return state.tabGroups.values() + } - @computed get isActive () { - return state.activeTabGroup === this - } + @computed get isActive () { + return state.activeTabGroup === this + } - @mapEntity('tabs') - @action addTab (tab, insertIndex = this.tabs.length) { - if (!tab) tab = new this.constructor.Tab() - if (tab.tabGroupId === this.id) { - if (tab.index === undefined) { - tab.index = insertIndex - } else if (tab.index === insertIndex) { - return + @mapEntity('tabs') + @action addTab (tab, insertIndex = this.tabs.length) { + if (!tab) tab = new this.constructor.Tab() + if (tab.tabGroupId === this.id) { + if (tab.index === undefined) { + tab.index = insertIndex + } else if (tab.index === insertIndex) { + return + } else { + this.tabs.map((tabItem) => { + if (tab.index > insertIndex) { + if (tabItem.index >= insertIndex && tabItem.index < tab.index) { + tabItem.index ++ + } + } else { + if (tabItem.index <= insertIndex && tabItem.index > tab.index) { + tabItem.index -- + } + } + }) + tab.index = insertIndex > 0 ? insertIndex : 0 + } } else { this.tabs.map((tabItem) => { - if (tab.index > insertIndex) { - if (tabItem.index >= insertIndex && tabItem.index < tab.index) { - tabItem.index ++ - } - } else { - if (tabItem.index <= insertIndex && tabItem.index > tab.index) { - tabItem.index -- - } + if (tabItem.index >= insertIndex && tabItem.index < tab.index) { + tabItem.index ++ } }) tab.index = insertIndex > 0 ? insertIndex : 0 } - } else { - this.tabs.map((tabItem) => { - if (tabItem.index >= insertIndex && tabItem.index < tab.index) { - tabItem.index ++ - } - }) - tab.index = insertIndex > 0 ? insertIndex : 0 + + tab.tabGroupId = this.id + tab.activate() + return tab } - - tab.tabGroupId = this.id - tab.activate() - return tab - } - @action activate () { - state.activeTabGroupId = this.id - } + @action activate () { + state.activeTabGroupId = this.id + } - @mapEntity('tabs') - @action activateTab (tab) { - tab.activate() - } + @mapEntity('tabs') + @action activateTab (tab) { + tab.activate() + } - @mapEntity('tabs') - @action removeTab (tab) { - if (tab.isActive) { - const adjacentTab = tab.getAdjacent() - if (adjacentTab) adjacentTab.activate() + @mapEntity('tabs') + @action removeTab (tab) { + if (tab.isActive) { + const adjacentTab = tab.getAdjacent() + if (adjacentTab) adjacentTab.activate() + } + tab.tabGroupId = null } - tab.tabGroupId = null - } - @mapEntity('tabGroups') - @action merge (tabGroup) { - if (!tabGroup) return - const baseIndex = this.tabs.length - tabGroup.tabs.forEach((tab) => { - tab.tabGroupId = this.id - tab.index += baseIndex - }) - this.activate() - } + @mapEntity('tabGroups') + @action merge (tabGroup) { + if (!tabGroup) return + const baseIndex = this.tabs.length + tabGroup.tabs.forEach((tab) => { + tab.tabGroupId = this.id + tab.index += baseIndex + }) + this.activate() + } - @mapEntity('tabGroups') - @action mergeTo (tabGroup) { - tabGroup.merge(this) - } + @mapEntity('tabGroups') + @action mergeTo (tabGroup) { + tabGroup.merge(this) + } - @action destroy () { - state.tabGroups.delete(this.id) + @action destroy () { + state.tabGroups.delete(this.id) + } } -} return { Tab, TabGroup, state } } diff --git a/app/commons/Tree/TreeNode.jsx b/app/commons/Tree/TreeNode.jsx index 557109fd..5c0b9001 100644 --- a/app/commons/Tree/TreeNode.jsx +++ b/app/commons/Tree/TreeNode.jsx @@ -1,43 +1,157 @@ import React, { Component } from 'react' +import { camelCase } from 'lodash' import ReactCSSTransitionGroup from 'react-addons-css-transition-group' import { observer } from 'mobx-react' import config from 'config' import cx from 'classnames' import dnd from 'utils/dnd' +import { gtouchstart, gtouchend, gtouchmove } from 'utils/touch' import icons from 'file-icons-js' +import { fileIconProviders } from 'components/FileTree/state' @observer class TreeNode extends Component { - constructor (props) { - super(props) + componentDidUpdate () { + if (this.props.node.isFocused && this.nodeDOM) { + this.nodeDOM.scrollIntoViewIfNeeded && this.nodeDOM.scrollIntoViewIfNeeded() + } + } + + resolveFolderIcon = (defaultIconStr) => { + const { node } = this.props + const provider = fileIconProviders.get(config.fileicons) + const fileIconsProvider = typeof provider === 'function' ? provider() : provider + if (fileIconsProvider && fileIconsProvider.foldericons) { + const { icons: allicons, foldericons: foldericonsMap } = fileIconsProvider + if (!foldericonsMap.icons || foldericonsMap.icons.length === 0) { + return () + } + let folderName = foldericonsMap.defaultIcon + for (let i = 0; i < foldericonsMap.icons.length; i += 1) { + const foldericon = foldericonsMap.icons[i] + if (foldericon.folderNames.includes(node.name)) { + folderName = foldericon.name + break + } + } + const finalyFolderName = !!node.isFolded + ? allicons[folderName] ? folderName : foldericonsMap.defaultIcon + : allicons[`${folderName}-open`] ? `${folderName}-open` : `${foldericonsMap.defaultIcon}-open` + return ( + + ) + } + return ( + + + + ) + } + + resolveFileIcon = (defaultIconStr) => { + const { node } = this.props + const provider = fileIconProviders.get(config.fileicons) + const fileIconsProvider = typeof provider === 'function' ? provider() : provider + if (fileIconsProvider && fileIconsProvider.fileicons) { + const { icons: allicons, fileicons: fileiconsMap } = fileIconsProvider + if (!fileiconsMap.icons || fileiconsMap.icons.length === 0) { + return () + } + let fileiconName = fileiconsMap.defaultIcon + const extension = node.name.split('.').pop() + for (let i = 0; i < fileiconsMap.icons.length; i += 1) { + const fileicon = fileiconsMap.icons[i] + if ((fileicon.fileNames && fileicon.fileNames.includes(node.name)) || (fileicon.fileExtensions && fileicon.fileExtensions.includes(extension))) { + fileiconName = fileicon.name + break + } + } + return ( + + ) + } + return ( + + + + ) } render () { const { node, openNode, selectNode, openContextMenu, onlyDir } = this.props if (!node || node.parentId === undefined) return null if (onlyDir && !node.isDir) return null + // const fileIconProvider = fileIconProviders.get('material-file-icon')() || null + const isDefaultIcon = config.fileicons === 'default' let iconStr = '' - if (node.isRoot) { - iconStr = 'fa fa-briefcase' - } else if (node.isDir && !node.isRoot && node.isFolded) { + if (!node.isDir) { + iconStr = icons.getClassWithColor(node.name) || 'fa fa-file-text-o' + } else if (node.isFolded) { iconStr = 'fa fa-folder-o' - } else if (node.isDir && !node.isRoot && !node.isFolded) { + } else if (!node.isFolded) { iconStr = 'fa fa-folder-open-o' - } else if (!node.isDir) { - iconStr = icons.getClassWithColor(node.name) || 'fa fa-file-text-o' } + // if (node.isRoot) { + // iconStr = 'fa fa-briefcase' + // } else if (node.isDir && !node.isRoot && node.isFolded) { + // iconStr = 'fa fa-folder-o' + // } else if (node.isDir && !node.isRoot && !node.isFolded) { + // iconStr = 'fa fa-folder-open-o' + // } else if (!node.isDir) { + // iconStr = icons.getClassWithColor(node.name) || 'fa fa-file-text-o' + // } return ( -
    { + data-droppable='FILE_TREE_NODE' + onContextMenu={(e) => { + if (config.isPad) return selectNode(node) openContextMenu(e, node) }} + onTouchMove={gtouchmove} + onTouchEnd={gtouchend} + onTouchStart={e => { + e.persist() + gtouchstart(() => { + selectNode(node) + openContextMenu(e, node) + }) + e.stopPropagation() + }} draggable='true' - onDragStart={e => { + onDragStart={(e) => { e.dataTransfer.effectAllowed = 'move' e.dataTransfer.setData('text/html', e.target.innerHTML) e.stopPropagation() @@ -46,57 +160,76 @@ class TreeNode extends Component { } }} > -
    this.nodeDOM = r} +
    (this.nodeDOM = r)} + onClick={e => { + selectNode(node) + config.isPad ? openNode(node) : '' + }} onDoubleClick={e => openNode(node)} - onClick={e => selectNode(node)} style={{ paddingLeft: `${1 + node.depth}em` }} > {node.isLoading && } - {!node.isLoading && openNode(node, null, e.altKey)}> - {node.isDir && } - } - - - - + {!node.isLoading && ( + e.stopPropagation()} + onClick={e => config.isPad ? '' : openNode(node, null, e.altKey)} + > + {node.isDir && ( + + )} + + )} + {isDefaultIcon ? ( + {} + ) : node.isDir ? ( + this.resolveFolderIcon(iconStr) + ) : ( + this.resolveFileIcon(iconStr) + )} + {node.name || config.projectName}
    - {node.isDir && -
    - - {!node.isFolded && node.children.length > 0 &&
    - {node.children.map(childNode => - - )} -
    } -
    -
    } + {node.isDir && ( +
    + + {!node.isFolded && + node.children.length > 0 && ( +
    + {node.children.map(childNode => ( + + ))} +
    + )} +
    +
    + )}
    ) } - - componentDidUpdate () { - if (this.props.node.isFocused && this.nodeDOM) { - this.nodeDOM.scrollIntoViewIfNeeded && this.nodeDOM.scrollIntoViewIfNeeded() - } - } } export default TreeNode diff --git a/app/commons/Tree/state.js b/app/commons/Tree/state.js index 2d569af6..60a49fbf 100644 --- a/app/commons/Tree/state.js +++ b/app/commons/Tree/state.js @@ -31,153 +31,153 @@ function TreeNodeScope () { state.entities.set(this.id, this) } - @protectedObservable _name = '' - @protectedObservable _isDir = false - @protectedObservable _parentId = undefined - - @observable _depth = undefined - @observable isFolded = true - @observable isLoading = false - @observable isFocused = false - @observable isHighlighted = false - @observable index = 0 - - @computed get isShadowRoot () { - return this.id === SHADOW_ROOT_NODE - } + @protectedObservable _name = '' + @protectedObservable _isDir = false + @protectedObservable _parentId = undefined + + @observable _depth = undefined + @observable isFolded = true + @observable isLoading = false + @observable isFocused = false + @observable isHighlighted = false + @observable index = 0 + + @computed get isShadowRoot () { + return this.id === SHADOW_ROOT_NODE + } - @computed get parent () { - let parent - if (typeof this.parentId === 'string') parent = state.entities.get(this.parentId) - // don't allow recurse to self - if (this.id === SHADOW_ROOT_NODE) return null - if (parent === this) { throw Error(`Node ${this.id} is parent of itself...`) } - return parent || state.shadowRoot - } - set parent (parent) { this.parentId = parent.id } + @computed get parent () { + let parent + if (typeof this.parentId === 'string') parent = state.entities.get(this.parentId) + // don't allow recurse to self + if (this.id === SHADOW_ROOT_NODE) return null + if (parent === this) { throw Error(`Node ${this.id} is parent of itself...`) } + return parent || state.shadowRoot + } + set parent (parent) { this.parentId = parent.id } - @computed get depth () { - if (this._depth !== undefined) return this._depth - if (this.isShadowRoot) return -1 - return this.parent.depth + 1 - } + @computed get depth () { + if (this._depth !== undefined) return this._depth + if (this.isShadowRoot) return -1 + return this.parent.depth + 1 + } - @computed get children () { - return state.entities.values() - .filter(node => node.parent === this) - .sort(this.constructor.nodeSorter) - } + @computed get children () { + return state.entities.values() + .filter(node => node.parent === this) + .sort(this.constructor.nodeSorter) + } - @computed get siblings () { - return this.parent.children - } + @computed get siblings () { + return this.parent.children + } - @computed get prev () { - return this.siblings[this.index - 1] - } + @computed get prev () { + return this.siblings[this.index - 1] + } - @computed get next () { - if (this.isShadowRoot) return this - return this.siblings[this.index + 1] - } + @computed get next () { + if (this.isShadowRoot) return this + return this.siblings[this.index + 1] + } - @computed get firstChild () { - return this.children[0] - } + @computed get firstChild () { + return this.children[0] + } - @computed get lastChild () { - return this.children[this.children.length - 1] - } + @computed get lastChild () { + return this.children[this.children.length - 1] + } - @computed get lastVisibleDescendant () { - const lastChild = this.lastChild - if (!lastChild) return this - if (!lastChild.isDir) return lastChild - if (lastChild.isFolded) return lastChild - return lastChild.lastVisibleDescendant - } + @computed get lastVisibleDescendant () { + const lastChild = this.lastChild + if (!lastChild) return this + if (!lastChild.isDir) return lastChild + if (lastChild.isFolded) return lastChild + return lastChild.lastVisibleDescendant + } - @computed get getPrev () { - if (this.isShadowRoot) return this - const prevNode = this.prev - if (prevNode) { - if (!prevNode.isDir || prevNode.isFolded) return prevNode - if (prevNode.lastChild) { - return prevNode.lastVisibleDescendant + @computed get getPrev () { + if (this.isShadowRoot) return this + const prevNode = this.prev + if (prevNode) { + if (!prevNode.isDir || prevNode.isFolded) return prevNode + if (prevNode.lastChild) { + return prevNode.lastVisibleDescendant + } + return prevNode } - return prevNode + return this.parent } - return this.parent - } - @computed get getNext () { - if (this.isDir && !this.isFolded) { - if (this.firstChild) return this.firstChild - } else if (this.isShadowRoot) { - return this - } + @computed get getNext () { + if (this.isDir && !this.isFolded) { + if (this.firstChild) return this.firstChild + } else if (this.isShadowRoot) { + return this + } - const nextNode = this.next - if (nextNode) return nextNode - return this.parent.next - } + const nextNode = this.next + if (nextNode) return nextNode + return this.parent.next + } - @action forEachDescendant (handler) { - if (!this.isDir) return - this.children.forEach((childNode, i) => { - handler(childNode, i) - childNode.forEachDescendant(handler) - }) - } + @action forEachDescendant (handler) { + if (!this.isDir) return + this.children.forEach((childNode, i) => { + handler(childNode, i) + childNode.forEachDescendant(handler) + }) + } - @action focus () { - if (this.isShadowRoot) return - this.isFocused = true - } + @action focus () { + if (this.isShadowRoot) return + this.isFocused = true + } - @action unfocus () { - this.isFocused = false - } + @action unfocus () { + this.isFocused = false + } - @action fold () { - if (!this.isDir || this.isFolded) return - this.isFolded = true - } + @action fold () { + if (!this.isDir || this.isFolded) return + this.isFolded = true + } - @action unfold () { - if (!this.isDir || !this.isFolded) return - this.isFolded = false - } + @action unfold () { + if (!this.isDir || !this.isFolded) return + this.isFolded = false + } - @action toggleFold (shouldBeFolded) { - if (shouldBeFolded) { - this.fold() - } else { - this.unfold() + @action toggleFold (shouldBeFolded) { + if (shouldBeFolded) { + this.fold() + } else { + this.unfold() + } } - } - @action highlight () { - if (!this.isDir || this.isHighlighted) return - this.isHighlighted = true - } + @action highlight () { + if (!this.isDir || this.isHighlighted) return + this.isHighlighted = true + } - @action unhighlight () { - if (!this.isDir || !this.isHighlighted) return - this.isHighlighted = false - } + @action unhighlight () { + if (!this.isDir || !this.isHighlighted) return + this.isHighlighted = false + } - @action exile () { - this.originalParentId = this._parentId - this._parentId = NOWHERE_LAND - } + @action exile () { + this.originalParentId = this._parentId + this._parentId = NOWHERE_LAND + } - @action welcome () { - if (this._parentId !== NOWHERE_LAND) return - this._parentId = this.originalParentId - delete this.originalParentId + @action welcome () { + if (this._parentId !== NOWHERE_LAND) return + this._parentId = this.originalParentId + delete this.originalParentId + } } -} const shadowRootNode = new TreeNode({ id: SHADOW_ROOT_NODE, diff --git a/app/components/Accordion/Accordion.jsx b/app/components/Accordion/Accordion.jsx index 4981cc21..404c4dbe 100644 --- a/app/components/Accordion/Accordion.jsx +++ b/app/components/Accordion/Accordion.jsx @@ -16,6 +16,7 @@ class Accordion extends Component { const style = { flexGrow: this.state.showSection ? this.props.size : 0, } + const { bodyStyle } = this.props return (
    @@ -30,7 +31,7 @@ class Accordion extends Component { {this.props.actions}
    -
    +
    {this.props.children}
    diff --git a/app/components/ContextMenu/store.js b/app/components/ContextMenu/store.js index 3d380b06..26a4972d 100644 --- a/app/components/ContextMenu/store.js +++ b/app/components/ContextMenu/store.js @@ -2,6 +2,7 @@ import state from './state' import isFunction from 'lodash/isFunction' import isArray from 'lodash/isArray' import { createAction, handleAction, registerAction } from 'utils/actions' +import config from 'config' const OPEN_CONTEXT_MENU = 'menu:open_context_menu' handleAction(OPEN_CONTEXT_MENU, ({ isActive, pos, contextNode, items, className }) => { @@ -23,7 +24,14 @@ function openContextMenuFactory (items, margin, className) { const openContextMenu = createAction(OPEN_CONTEXT_MENU, (e, context, items = [], margin = { x: 0, y: 0, relative: false }, className = '') => { e.stopPropagation() e.preventDefault() - let pos = { x: e.clientX + margin.x, y: e.clientY + margin.y } + + const rects = e.target.getBoundingClientRect() + const isPad = config.isPad + + let pos = { + x: (isPad ? rects.x + rects.width / 2 : e.clientX) + margin.x, + y: (isPad ? rects.y + rects.height : e.clientY) + + margin.y + } if (margin.relative) { const rect = e.target.getBoundingClientRect() pos = { x: rect.x + rect.width + margin.x, y: rect.y + rect.height + margin.y } diff --git a/app/components/Editor/EditorWrapper.jsx b/app/components/Editor/EditorWrapper.jsx index c0867dfe..30536fc2 100644 --- a/app/components/Editor/EditorWrapper.jsx +++ b/app/components/Editor/EditorWrapper.jsx @@ -3,33 +3,96 @@ import PropTypes from 'prop-types' import { observer } from 'mobx-react' import { when } from 'mobx' import CodeEditor from './components/CodeEditor' -import MarkdownEditor from './components/MarkdownEditor' +import MarkDownEditor from './components/MarkdownEditor' import ImageEditor from './components/ImageEditor' import UnknownEditor from './components/UnknownEditor' import WelcomeEditor from './components/WelcomeEditor' import HtmlEditor from './components/HtmlEditor' import config from '../../config' +import pluginStore from '../Plugins/store' + +const editorSet = [ + { + editorType: 'htmlEditor', + editor: HtmlEditor, + }, + { + editorType: 'markdownEditor', + editor: MarkDownEditor, + }, + { + editorType: 'imageEditor', + editor: ImageEditor, + }, + { + editorType: 'textEditor', + editor: CodeEditor, + }, + { + editorType: 'unknownEditor', + editor: UnknownEditor, + }, +]; + +function matchEditorByContentType(editorType, contentType) { + for (let i = 0, n = editorSet.length; i < n; i++) { + const set = editorSet[i]; + if (set.editorType) { + if (set.editorType === editorType) { + return set.editor; + } + } else if (set.mime) { + if (set.mime.includes(contentType)) { + return set.editor; + } + } + } + return UnknownEditor; +} +// 编辑器插件数组 +let pluginArray = []; const EditorWrapper = observer(({ tab, active }) => { + // loading + if (tab.file && tab.file.isEditorLoading) { + return ( +
    + +
    + ) + } const { editor } = tab - const editorType = editor.editorType || 'default' const file = editor.file || {} - // key is crutial here, it decides whether - // the component should re-construct or - // keep using the existing instance. - const key = `editor_${file.path}` - switch (editorType) { - case 'htmlEditor': - return React.createElement(HtmlEditor, { editor, key, tab, active }) - case 'default': - return React.createElement(CodeEditor, { editor, key, tab, active }) - case 'editorWithPreview': - return React.createElement(MarkdownEditor, { editor, key, tab, active }) - case 'imageEditor': - return React.createElement(ImageEditor, { path: file.path, key, tab, active }) - default: - return React.createElement(UnknownEditor, { path: file.path, size: file.size, key, tab, active }) + // 编辑器插件 + if (!pluginArray.length) { + pluginArray = pluginStore.plugins.values().filter(plugin => plugin.label.mime); + for (let i = 0, n = pluginArray.length; i < n; i++) { + const plugin = pluginArray[i]; + editorSet.unshift({ + mime: plugin.label.mime, + editor: plugin.app, + }); + } } + // key is crutial here, it decides whether the component should re-construct + // or keep using the existing instance. + const key = `editor_${file.path}`; + const editorElement = matchEditorByContentType(editor.editorType, editor.contentType); + return React.createElement(editorElement, { editor, key, tab, active, path: file.path, size: file.size }); + // switch (editorType) { + // case 'htmlEditor': + // return React.createElement(HtmlEditor, { editor, key, tab, active }) + // case 'textEditor': + // return React.createElement(CodeEditor, { editor, key, tab, active }) + // case 'imageEditor': + // return React.createElement(ImageEditor, { path: file.path, key, tab, active }) + // case 'markdownEditor': + // return React.createElement(MarkdownEditor, { editor, key, tab, active }) + // case 'unknownEditor': + // return React.createElement(UnknownEditor, { path: file.path, size: file.size, key, tab, active }) + // default: + // return React.createElement(UnknownEditor, { path: file.path, size: file.size, key, tab, active }) + // } }) EditorWrapper.propTypes = { diff --git a/app/components/Editor/actions.js b/app/components/Editor/actions.js index 82944d77..f36106a6 100644 --- a/app/components/Editor/actions.js +++ b/app/components/Editor/actions.js @@ -8,6 +8,32 @@ const getCurrentCM = () => { return cm } +const getCurrentMonaco = () => { + const { EditorTabState } = mobxStore + const activeTab = EditorTabState.activeTab + const monaco = activeTab ? activeTab.editorInfo.monacoEditor : null + return monaco +} + + +export const formatMonacoCode = registerAction('edit:toggle_format_monaco', () => { + const monaco = getCurrentMonaco() + monaco.trigger('format', 'editor.action.formatDocument') + // debugger + // if (!monaco) return + // const action = monaco.getAction('editor.action.format') + // if (action) { + // action.run() + // } + // let range = { from: cm.getCursor(true), to: cm.getCursor(false) } + // if (range.from.ch === range.to.ch && range.from.line === range.to.line) { + // cm.execCommand('selectAll') + // range = { from: cm.getCursor(true), to: cm.getCursor(false) } + // } + // cm.autoFormatRange(range.from, range.to) +}) + + export const formatCode = registerAction('edit:toggle_format', () => { const cm = getCurrentCM() if (!cm) return @@ -32,3 +58,8 @@ export const toggleComment = registerAction('edit:toggle_comment', () => { cm.blockComment(range.from, range.to, { fullLines: false }) } }) + +export const toggleMonacoComment = registerAction('edit:toggle_monaco_comment', () => { + const monacoEditor = getCurrentMonaco() + monacoEditor.trigger('format', 'editor.action.commentLine') +}) diff --git a/app/components/Editor/codemirrorDefaultOptions.js b/app/components/Editor/codemirrorDefaultOptions.js index 828db261..8b56d9ae 100644 --- a/app/components/Editor/codemirrorDefaultOptions.js +++ b/app/components/Editor/codemirrorDefaultOptions.js @@ -40,15 +40,15 @@ extraKeys['Tab'] = function betterTab (cm) { // precisely, these are the default options that we want to override const options = { - theme: 'default', - autofocus: true, + theme: 'material', + autofocus: false, lineNumbers: true, lint: null, matchBrackets: true, autoCloseBrackets: true, dragDrop: false, - trimTrailingWhitespace: undefined, - insertFinalNewline: undefined, + trimTrailingWhitespace: 'off', + insertFinalNewline: 'off', smartIndent: false, extraKeys, } diff --git a/app/components/Editor/components/CodeEditor/BaseCodeEditor.jsx b/app/components/Editor/components/CodeEditor/BaseCodeEditor.jsx index b87f0131..955bd13b 100644 --- a/app/components/Editor/components/CodeEditor/BaseCodeEditor.jsx +++ b/app/components/Editor/components/CodeEditor/BaseCodeEditor.jsx @@ -16,7 +16,7 @@ class BaseCodeEditor extends Component { this.highlight = this.highlight.bind(this) } - componentDidMount () { + componentDidMount() { const cm = this.cm this.dom.appendChild(this.cmDOM) @@ -29,7 +29,7 @@ class BaseCodeEditor extends Component { // cm.setCursor({ line: scrollLine, ch: 0 }) // cm.focus() // }, 100) - + emitter.on(E.FILE_HIGHLIGHT, this.highlight) } diff --git a/app/components/Editor/components/CodeEditor/addons/mode/loadMode.js b/app/components/Editor/components/CodeEditor/addons/mode/loadMode.js index 6163759e..f0d60fcf 100644 --- a/app/components/Editor/components/CodeEditor/addons/mode/loadMode.js +++ b/app/components/Editor/components/CodeEditor/addons/mode/loadMode.js @@ -164,6 +164,23 @@ export default function loadMode (mode) { return import( 'codemirror/mode/htmlembedded/htmlembedded.js' ) + case 'application/x-jsp': + case 'application/x-aspx': + { + const tasks = [ + import('codemirror/mode/htmlembedded/htmlembedded.js'), + import('codemirror/mode/clike/clike.js') + ] + return Promise.all(tasks) + } + case 'application/x-erb': + { + const tasks = [ + import('codemirror/mode/htmlembedded/htmlembedded.js'), + import('codemirror/mode/ruby/ruby.js') + ] + return Promise.all(tasks) + } case 'htmlmixed': return import( 'codemirror/mode/htmlmixed/htmlmixed.js' diff --git a/app/components/Editor/components/CodeEditor/addons/mode/modeInfos.js b/app/components/Editor/components/CodeEditor/addons/mode/modeInfos.js index 7ef5c70b..51af2771 100644 --- a/app/components/Editor/components/CodeEditor/addons/mode/modeInfos.js +++ b/app/components/Editor/components/CodeEditor/addons/mode/modeInfos.js @@ -32,7 +32,7 @@ const modeInfos = [ { name: 'Eiffel', mime: 'text/x-eiffel', mode: 'eiffel', ext: ['e'] }, { name: 'Elm', mime: 'text/x-elm', mode: 'elm', ext: ['elm'] }, { name: 'Embedded Javascript', mime: 'application/x-ejs', mode: 'htmlembedded', ext: ['ejs'] }, - { name: 'Embedded Ruby', mime: 'application/x-erb', mode: 'htmlembedded', ext: ['erb'] }, + { name: 'Embedded Ruby', mime: 'application/x-erb', mode: 'application/x-erb', ext: ['erb'] }, { name: 'Erlang', mime: 'text/x-erlang', mode: 'erlang', ext: ['erl'] }, { name: 'Factor', mime: 'text/x-factor', mode: 'factor', ext: ['factor'] }, { name: 'FCL', mime: 'text/x-fcl', mode: 'fcl' }, @@ -49,13 +49,13 @@ const modeInfos = [ { name: 'Haskell (Literate)', mime: 'text/x-literate-haskell', mode: 'haskell-literate', ext: ['lhs'] }, { name: 'Haxe', mime: 'text/x-haxe', mode: 'haxe', ext: ['hx'] }, { name: 'HXML', mime: 'text/x-hxml', mode: 'haxe', ext: ['hxml'] }, - { name: 'ASP.NET', mime: 'application/x-aspx', mode: 'htmlembedded', ext: ['aspx'], alias: ['asp', 'aspx'] }, - { name: 'HTML', mime: 'text/html', mode: 'htmlmixed', ext: ['html', 'htm'], alias: ['xhtml'] }, + { name: 'ASP.NET', mime: 'application/x-aspx', mode: 'application/x-aspx', ext: ['aspx'], alias: ['asp', 'aspx'] }, + { name: 'HTML', mime: 'text/html', mode: 'htmlmixed', ext: ['html', 'htm', 'wpy'], alias: ['xhtml'] }, { name: 'HTTP', mime: 'message/http', mode: 'http' }, { name: 'IDL', mime: 'text/x-idl', mode: 'idl', ext: ['pro'] }, { name: 'Pug', mime: 'text/x-pug', mode: 'pug', ext: ['jade', 'pug'], alias: ['jade'] }, - { name: 'Java', mime: 'text/x-java', mode: 'clike', ext: ['java'] }, - { name: 'Java Server Pages', mime: 'application/x-jsp', mode: 'htmlembedded', ext: ['jsp'], alias: ['jsp'] }, + { name: 'Java', mime: 'text/x-java', mode: 'clike', ext: ['java', 'class'] }, + { name: 'Java Server Pages', mime: 'application/x-jsp', mode: 'application/x-jsp', ext: ['jsp'], alias: ['jsp'] }, { name: 'JavaScript', mimes: ['text/javascript', 'text/ecmascript', 'application/javascript', 'application/x-javascript', 'application/ecmascript'], mode: 'javascript', diff --git a/app/components/Editor/components/CodeEditor/mixins/basicMixin.jsx b/app/components/Editor/components/CodeEditor/mixins/basicMixin.jsx index 99cba62a..bdda8ec1 100644 --- a/app/components/Editor/components/CodeEditor/mixins/basicMixin.jsx +++ b/app/components/Editor/components/CodeEditor/mixins/basicMixin.jsx @@ -11,12 +11,12 @@ function changeInterceptor (editor) { let modFileContent = fileContent const { trimTrailingWhitespace, insertFinalNewline } = editor.options - if (trimTrailingWhitespace) { - modFileContent = modFileContent.replace(/[ \t]+$/gm, '') + if (trimTrailingWhitespace === 'on') { + modFileContent = modFileContent.replace(/[ \t]+$/gm, ''); } - if (insertFinalNewline) { - if (!modFileContent.endsWith('\n')) modFileContent += '\n' + if (insertFinalNewline === 'on') { + if (!modFileContent.endsWith('\n')) modFileContent += '\n'; } if (modFileContent !== fileContent) { diff --git a/app/components/Editor/components/EditorWidgets/EditorWidgets.jsx b/app/components/Editor/components/EditorWidgets/EditorWidgets.jsx index 725b54ea..602128a5 100644 --- a/app/components/Editor/components/EditorWidgets/EditorWidgets.jsx +++ b/app/components/Editor/components/EditorWidgets/EditorWidgets.jsx @@ -1,5 +1,6 @@ import React, { Component } from 'react' import { observer, inject } from 'mobx-react' +import config from 'config' import ModeWidget from './ModeWidget' import LineWidget from './LineWidget' import LinterWidget from './LinterWidget' @@ -8,7 +9,7 @@ import EncodingWidget from './EncodingWidget' @inject(({ EditorTabState }) => { const activeTab = EditorTabState.activeTab if (!activeTab || !activeTab.editor) return { editor: null } - return { editor: activeTab.editor } + return { editor: activeTab.editorInfo } }) @observer class EditorWidgets extends Component { diff --git a/app/components/Editor/components/EditorWidgets/ModeWidget.jsx b/app/components/Editor/components/EditorWidgets/ModeWidget.jsx index 1d33b563..a56037d6 100644 --- a/app/components/Editor/components/EditorWidgets/ModeWidget.jsx +++ b/app/components/Editor/components/EditorWidgets/ModeWidget.jsx @@ -1,7 +1,10 @@ import React, { Component } from 'react' import { observer } from 'mobx-react' + +import config from 'config' import cx from 'classnames' import modeInfos from 'components/Editor/components/CodeEditor/addons/mode/modeInfos' +import monacoModeInfos from 'components/MonacoEditor/utils/modeInfos' import Menu from 'components/Menu' @observer @@ -23,11 +26,12 @@ export default class ModeWidget extends Component { } makeModeMenuItems () { - return modeInfos.map((mode) => ({ - key: mode.name, - name: mode.name, + const languageInfos = monaco.languages.getLanguages() + return languageInfos.map((mode) => ({ + key: mode.id, + name: mode.aliases[0] || mode.id, command: () => { - this.setMode(mode.name) + this.setMode(mode.id) }, })) } diff --git a/app/components/Editor/components/HtmlEditor/index.jsx b/app/components/Editor/components/HtmlEditor/index.jsx index 744c8146..187ad2af 100644 --- a/app/components/Editor/components/HtmlEditor/index.jsx +++ b/app/components/Editor/components/HtmlEditor/index.jsx @@ -73,7 +73,7 @@ class HtmlEditor extends Component { componentDidMount () { autorun(() => { - if (this.props.tab.file.isSynced) { + if (this.props.tab.file && this.props.tab.file.isSynced) { this.props.tab.previewUniqueId = uniqueId() } }) @@ -163,7 +163,7 @@ class HtmlEditor extends Component { } } -HtmlEditor.PropTypes = { +HtmlEditor.propTypes = { tab: PropTypes.object, } diff --git a/app/components/Editor/components/ImageEditor.jsx b/app/components/Editor/components/ImageEditor.jsx index f7dd2c43..aa6acc27 100644 --- a/app/components/Editor/components/ImageEditor.jsx +++ b/app/components/Editor/components/ImageEditor.jsx @@ -3,17 +3,20 @@ import PropTypes from 'prop-types' import config from 'config' import { request } from 'utils' -const previewPic = 'https://dn-coding-net-production-static.qbox.me/static/5d487aa5c207cf1ca5a36524acb953f1.gif' +const previewPic = 'https://coding-net-production-static.codehub.cn/static/5d487aa5c207cf1ca5a36524acb953f1.gif'; + class ImageEditor extends Component { constructor (props) { super(props) - this.state = {} + this.state = { + imageUrl: null, + background: null, + } } getImageUrl () { - const { baseURL, spaceKey } = config - const backgroundImageUrl = - `${baseURL}/workspaces/${spaceKey}/raw?path=${encodeURIComponent(this.props.path)}` + const { baseURL, spaceKey } = config; + const backgroundImageUrl = `${baseURL}/workspaces/${spaceKey}/raw?path=${encodeURIComponent(this.props.path)}`; request.get(backgroundImageUrl, {}, { responseType: 'blob', }).then(blob => { @@ -22,10 +25,46 @@ class ImageEditor extends Component { }) } + handleAlphaBackground() { + const imgElement = new Image(); + imgElement.src = this.state.imageUrl; + imgElement.crossOrigin = 'Anonymous'; + imgElement.onload = () => { + const canvas = document.createElement('canvas'); + const context = canvas.getContext('2d'); + canvas.width = 10; + canvas.height = 10; + // 清除画布 + context.clearRect(0, 0, 10, 10); + // 图片绘制在画布上 + context.drawImage(imgElement, 0, 0); + // 获取图片像素信息 + const imageData = context.getImageData(0, 0, 10, 10).data; + // 检测有没有透明数据 + let isAlphaBackground = false; + for (let i = 3; i < imageData.length; i += 4) { + if (imageData[i] != 255) { + isAlphaBackground = true; + break; + } + } + if (isAlphaBackground) { + this.setState({ background: `url("${previewPic}") right bottom #eee` }); + } + } + } + componentDidMount () { this.getImageUrl() } + componentDidUpdate() { + if (this.state.background) { + return; + } + this.handleAlphaBackground(); + } + componentWillReceiveProps ({ path }) { if (this.props.path !== path) { if (this.state.imageUrl) window.URL.revokeObjectURL(this.state.imageUrl) @@ -38,25 +77,18 @@ class ImageEditor extends Component { } render () { - if (!this.state.imageUrl) { + const { imageUrl, background } = this.state; + const img = background + ? preview + : preview; + if (!imageUrl) { return ( -
    - +
    +
    - ) + ); } - return ( -
    - preview -
    ) + return img; } } @@ -64,5 +96,4 @@ ImageEditor.propTypes = { path: PropTypes.string }; - -export default ImageEditor +export default ImageEditor; diff --git a/app/components/Editor/components/MarkdownEditor/index.jsx b/app/components/Editor/components/MarkdownEditor/index.jsx index 5ae4bd53..4e46d1c3 100644 --- a/app/components/Editor/components/MarkdownEditor/index.jsx +++ b/app/components/Editor/components/MarkdownEditor/index.jsx @@ -3,7 +3,6 @@ import PropTypes from 'prop-types' import { autorun, extendObservable, observable, autorunAsync } from 'mobx' import debounce from 'lodash/debounce' import cx from 'classnames' -import marked from 'marked' import Remarkable from 'remarkable' import { observer } from 'mobx-react' import CodeEditor from '../CodeEditor' @@ -69,13 +68,6 @@ md.renderer.rules.heading_open = (tokens, idx) => { return '' } -marked.setOptions({ - highlight: (code) => { - require('highlight.js/styles/github-gist.css') - return require('highlight.js').highlightAuto(code).value - }, -}) - @observer class PreviewEditor extends Component { constructor (props) { @@ -142,7 +134,7 @@ class MarkdownEditor extends Component { showPreview: true, }) } - + this.state = observable({ previewContent: '', tokens: [] @@ -239,7 +231,7 @@ class MarkdownEditor extends Component { } } -MarkdownEditor.PropTypes = { +MarkdownEditor.propTypes = { tab: PropTypes.object, content: PropTypes.string, } diff --git a/app/components/Editor/components/MarkdownEditor/mdMixin.js b/app/components/Editor/components/MarkdownEditor/mdMixin.js index 46120075..cf1b7b98 100644 --- a/app/components/Editor/components/MarkdownEditor/mdMixin.js +++ b/app/components/Editor/components/MarkdownEditor/mdMixin.js @@ -1,7 +1,6 @@ import state from './state' // import findByTextContent from './utils' import debounce from 'lodash/debounce' -import marked from 'marked' import animatedScrollTo from 'animated-scrollto' const buildScrollMap = (previewDOM) => { diff --git a/app/components/Editor/components/UnknownEditor.jsx b/app/components/Editor/components/UnknownEditor.jsx index 00f253cd..00bca284 100644 --- a/app/components/Editor/components/UnknownEditor.jsx +++ b/app/components/Editor/components/UnknownEditor.jsx @@ -2,6 +2,7 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' import filesize from 'filesize' import config from 'config' +import api from '../../../backendAPI' class UnknownEditor extends Component { constructor (props) { @@ -12,6 +13,7 @@ class UnknownEditor extends Component { } this.getFileUrl = this.getFileUrl.bind(this) this.getFileExt = this.getFileExt.bind(this) + this.handleDownload = this.handleDownload.bind(this) } getFileUrl () { @@ -28,11 +30,15 @@ class UnknownEditor extends Component { } } + handleDownload () { + api.downloadFile(this.props.path, false) + } + render () { return (
    -
    - +
    {`${this.props.path} - ${filesize(this.props.size)}`} diff --git a/app/components/Editor/state.js b/app/components/Editor/state.js index c17c71c6..1df4ced4 100644 --- a/app/components/Editor/state.js +++ b/app/components/Editor/state.js @@ -2,7 +2,7 @@ import uniqueId from 'lodash/uniqueId' import is from 'utils/is' import getTabType from 'utils/getTabType' import assignProps from 'utils/assignProps' -import { reaction, observe, observable, computed, action, autorun, extendObservable } from 'mobx' +import { observe, observable, computed, action, autorun, extendObservable } from 'mobx' import CodeMirror from 'codemirror' import FileStore from 'commons/File/store' import TabStore from 'components/Tab/store' @@ -10,15 +10,15 @@ import overrideDefaultOptions from './codemirrorDefaultOptions' import { loadMode } from './components/CodeEditor/addons/mode' import { findModeByFile, findModeByMIME, findModeByName } from './components/CodeEditor/addons/mode/findMode' +const defaultOptions = { ...CodeMirror.defaults, ...overrideDefaultOptions } + const typeDetect = (title, types) => { // title is the filename // typeArray is the suffix - if (!Array.isArray(types)) return title.endsWith(`.${types}`) - return types.reduce((p, v) => p || title.endsWith(`.${v}`), false) + if (!Array.isArray(types)) return title.toLowerCase().endsWith(`.${types}`) + return types.reduce((p, v) => p || title.toLowerCase().endsWith(`.${v}`), false) } -const defaultOptions = { ...CodeMirror.defaults, ...overrideDefaultOptions } - const state = observable({ entities: observable.map({}), options: observable.shallow(defaultOptions), @@ -34,6 +34,7 @@ state.entities.observe((change) => { class Editor { constructor (props = {}) { this.id = props.id || uniqueId('editor_') + this.contentType = props.contentType state.entities.set(this.id, this) this.update(props) if (!props.filePath || this.isCM) { @@ -65,34 +66,27 @@ class Editor { if (content !== cm.getValue()) cm.setValue(content) })) - this.disposers.push(reaction(() => { - if (this.tab && this.tab.isActive) return this.tab - }, (activeTab) => { - if (!activeTab) return - if (activeTab.editor && activeTab.editor.cm) { - setTimeout(() => { - activeTab.editor.cm.refresh() - activeTab.editor.cm.focus() - }, 1) - } - })) // 1. set value if (this.content) { cm.setValue(this.content) cm.clearHistory() - const scrollLine = this.scrollLine || 0 - if (scrollLine > 0) { - cm.scrollIntoView({ line: scrollLine, ch: 0 }) - // cm.setCursor({ line: scrollLine - 1, ch: 0 }) - } - cm.focus() } + // autorun(() => { + // const cursorLine = this.cursorLine || 0 + // if (cursorLine > 0) { + // cm.scrollIntoView({ line: cursorLine - 1, ch: 0 }) + // cm.setCursor({ line: cursorLine - 1, ch: 0 }) + // } + // }) + autorun(() => { - const cursorLine = this.cursorLine || 0 - if (cursorLine > 0) { - cm.scrollIntoView({ line: cursorLine - 1, ch: 0 }) - cm.setCursor({ line: cursorLine - 1, ch: 0 }) + const tab = this.tab; + if (tab && tab.isActive && tab.editor && tab.editor.cm) { + setTimeout(() => { + tab.editor.cm.refresh(); + tab.editor.cm.focus(); + }, 0); } }) @@ -201,29 +195,38 @@ class Editor { @computed get editorType () { - let type = 'default' - if (!this.file) return type - if (this.file.contentType) { - if (getTabType(this.file) === 'IMAGE') { - type = 'imageEditor' - } else if (getTabType(this.file) === 'UNKNOWN') { - type = 'unknownEditor' - } + const contentType = getTabType(this.contentType); + if (!this.file) { + return 'textEditor'; + } + if (typeDetect(this.file.name, ['md', 'markdown', 'mdown'])) { + return 'markdownEditor'; + } + if (typeDetect(this.file.name, ['html', 'htm'])) { + return 'htmlEditor' } - if (this.file.contentType === 'text/html') { - type = 'htmlEditor' - } else if (typeDetect(this.file.name, 'md')) { - type = 'editorWithPreview' + if (typeDetect(this.file.name, ['png', 'jpg', 'jpeg', 'gif', 'webp', 'ico', 'bmp'])) { + return 'imageEditor'; } - if (typeDetect(this.file.name, ['png', 'jpg', 'jpeg', 'gif'])) { - type = 'imageEditor' + switch (contentType) { + case 'TEXT': + return 'textEditor'; + case 'HTML': + return 'htmlEditor'; + case 'MARKDOWN': + return 'markdownEditor'; + case 'IMAGE': + return 'imageEditor'; + case 'UNKNOWN': + return 'unknownEditor'; + default: + return 'unknownEditor'; } - return type } @computed get isCM () { - return this.editorType === 'default' || this.editorType === 'editorWithPreview' || this.editorType === 'htmlEditor' + return ['textEditor', 'markdownEditor', 'htmlEditor'].includes(this.editorType); } disposers = [] diff --git a/app/components/FileTree/actions.js b/app/components/FileTree/actions.js index 36db4868..84dc5b39 100644 --- a/app/components/FileTree/actions.js +++ b/app/components/FileTree/actions.js @@ -2,16 +2,14 @@ import _ from 'lodash' import api from 'backendAPI' import { registerAction } from 'utils/actions' import FileStore from 'commons/File/store' -import * as TabActions from 'components/Tab/actions' import * as Modal from 'components/Modal/actions' import contextMenuStore from 'components/ContextMenu/store' import state, { FileTreeNode } from './state' -import bindToFile from './fileTreeToFileBinding' +import bindToFile, { isFileExcluded } from './fileTreeToFileBinding' import FileTreeContextMenuItems from './contextMenuItems' import dispatchCommand from 'commands/dispatchCommand' -import { getTabType } from 'utils' import i18n from 'utils/createI18n' -import icons from 'file-icons-js' +import is from 'utils/is' import statusBarState from '../StatusBar/state' import { notify, NOTIFY_TYPE } from '../Notification/actions' @@ -30,7 +28,6 @@ export const selectNode = registerAction('filetree:select_node', const offset = node if (typeof offset === 'number') { node = undefined - if (offset === 1) { const curNode = state.focusedNodes[state.focusedNodes.length - 1] if (curNode) node = curNode.getNext @@ -38,15 +35,12 @@ export const selectNode = registerAction('filetree:select_node', const curNode = state.focusedNodes[0] if (curNode) node = curNode.getPrev } - if (!node || node.isShadowRoot) node = state.root } - if (!multiSelect) { state.root.unfocus() state.shadowRoot.forEachDescendant(childNode => childNode.unfocus()) } - node.focus() } ) @@ -80,6 +74,40 @@ export const removeNode = registerAction('filetree:remove_node', (node) => { export const openContextMenu = contextMenuStore.openContextMenuFactory(FileTreeContextMenuItems) export const closeContextMenu = contextMenuStore.closeContextMenu +export const syncDirectory = registerAction('filetree:sync_file', (node, deep = false) => { + if (node.isDir) { + node.isLoaded = false + node.isLoading = true + FileStore.fetchPath(node.path) + .then((data) => { + if (deep) { + data.forEach((d) => { + if (d.isDir && !isFileExcluded(d.path) && (d.filesCount > 0 || d.directoriesCount > 0)) { + const fileNode = state.entities.get(d.path) + fileNode && fileNode.isLoaded && syncDirectory(fileNode, true) + } + }) + } + FileStore.loadNodeData(data) + }) + .then(res => { + node.isLoading = false + node.isLoaded = true + }) + } +}) + + +export const syncAllDirectoryByPath = registerAction('filetree:sync_all_dir', (rootPath) => { + if (!is.string(rootPath)) { + return false; + } + const rootNode = state.entities.get(rootPath); + if (rootNode.isDir) { + syncDirectory(rootNode, true); + } +}) + const openNodeCommonLogic = function (node, editor, shouldBeFolded = null, deep = false) { if (node.isDir) { if (!node.isLoaded) { @@ -94,19 +122,11 @@ const openNodeCommonLogic = function (node, editor, shouldBeFolded = null, deep } else { toggleNodeFold(node, shouldBeFolded, deep) } - } else if (getTabType(node) === 'TEXT') { - dispatchCommand('file:open_file', { path: node.path, editor }) } else { - TabActions.createTab({ - title: node.name, - icon: icons.getClassWithColor(node.name) || 'fa fa-file-text-o', - editor: { - ...editor, - filePath: node.path, - }, - }) + dispatchCommand('file:open_file', { path: node.path, editor, contentType: node.contentType }) } } + export const openNode = registerAction('filetree:open_node', (node, shouldBeFolded, deep) => ({ node, shouldBeFolded, deep }), ({ node, shouldBeFolded = null, deep = false }) => { diff --git a/app/components/FileTree/contextMenuItems.js b/app/components/FileTree/contextMenuItems.js index 252321d9..53ed1714 100644 --- a/app/components/FileTree/contextMenuItems.js +++ b/app/components/FileTree/contextMenuItems.js @@ -1,4 +1,4 @@ -import { gitBlameNode } from './actions' +import { gitBlameNode, syncDirectory, isInVCS } from './actions' import i18n from 'utils/createI18n' const divider = { isDivider: true } @@ -45,14 +45,20 @@ const items = [ getIsHidden: ctx => !ctx.isDir, }, - divider, { - name: i18n`fileTree.contextMenu.gitBlame`, - icon: 'fa', + name: i18n`fileTree.contextMenu.sync`, + icon: 'fa fa-refresh', command: (c) => { - gitBlameNode(c) + syncDirectory(c) }, - id: 'filetree_menu_gitBlame', + getIsHidden: ctx => !ctx.isDir, + }, + divider, + { + name: i18n`fileTree.contextMenu.ignore`, + icon: 'fa', + command: 'file:add_ignore', + id: 'filetree_menu_ignore' } ] diff --git a/app/components/FileTree/fileTreeToFileBinding.js b/app/components/FileTree/fileTreeToFileBinding.js index 93568026..1cfbad88 100644 --- a/app/components/FileTree/fileTreeToFileBinding.js +++ b/app/components/FileTree/fileTreeToFileBinding.js @@ -3,7 +3,7 @@ import minimatch from 'minimatch' import { reaction } from 'mobx' import is from 'utils/is' -function isFileExcluded (filePath) { +export function isFileExcluded (filePath) { if (filePath === '') return false return config.fileExcludePatterns.reduce((isMatched, pattern) => { if (isMatched) return true diff --git a/app/components/FileTree/state.js b/app/components/FileTree/state.js index 3e16eda1..7d5f2c2a 100644 --- a/app/components/FileTree/state.js +++ b/app/components/FileTree/state.js @@ -117,5 +117,7 @@ class FileTreeNode extends TreeNode { /* end extend */ } +const fileIconProviders = observable.map() + export default state -export { FileTreeNode, TreeNode } +export { FileTreeNode, TreeNode, fileIconProviders } diff --git a/app/components/FileTreeToolBar/FileTreeToolBar.jsx b/app/components/FileTreeToolBar/FileTreeToolBar.jsx new file mode 100644 index 00000000..f643a626 --- /dev/null +++ b/app/components/FileTreeToolBar/FileTreeToolBar.jsx @@ -0,0 +1,61 @@ +import React, { Component } from 'react' + +import { toggleNodeFold, syncAllDirectoryByPath } from 'components/FileTree/actions' +import { syncFile } from 'commons/File/actions' +import FileTreeState from 'components/FileTree/state' +import i18n from 'utils/createI18n' + +class FileTreeToolBar extends Component { + constructor(props) { + super(props); + this.state = { + syncActive: false, + collapseActive: false, + }; + } + + syncTree = () => { + if (this.state.syncActive === true) { + return; + } + this.setState({ syncActive: true }); + this.syncTimer = setTimeout(() => { + this.setState({ syncActive: false }); + }, 400); + syncAllDirectoryByPath(''); + } + + foldedAll = () => { + if (this.state.collapseActive === true) { + return; + } + const { children } = FileTreeState.root; + if (!children || children.length === 0) { + return; + } + this.setState({ collapseActive: true }); + this.collapseTimer = setTimeout(() => { + this.setState({ collapseActive: false }); + }, 200); + children.forEach(child => toggleNodeFold(child, true, true)); + } + + componentWillUnmount() { + clearTimeout(this.syncTimer); + clearTimeout(this.collapseTimer); + } + + render () { + return ( +
    + + + + + +
    + ) + } +} + +export default FileTreeToolBar; diff --git a/app/components/FileTreeToolBar/index.js b/app/components/FileTreeToolBar/index.js new file mode 100644 index 00000000..1d8986b0 --- /dev/null +++ b/app/components/FileTreeToolBar/index.js @@ -0,0 +1,3 @@ +import FileTreeToolBar from './FileTreeToolBar' + +export default FileTreeToolBar diff --git a/app/components/Git/GitBranchWidget.jsx b/app/components/Git/GitBranchWidget.jsx index 02d60767..52826c31 100644 --- a/app/components/Git/GitBranchWidget.jsx +++ b/app/components/Git/GitBranchWidget.jsx @@ -7,7 +7,7 @@ import { connect } from 'react-redux' import * as GitActions from './actions' import Menu from '../Menu' import i18n from 'utils/createI18n' - +import config from 'config' // add withRef to deliver ref to the wrapperedcomponent @connect(state => state.GitState.branches, @@ -28,7 +28,7 @@ export default class GitBranchWidget extends Component { const { current: currentBranch, local: localBranches, remote: remoteBranches } = this.props return (
    { this.toggleActive(true, true) }} + onClick={e => { this.toggleActive(true, true); config.menuBars.push(this) }} > @@ -63,6 +63,7 @@ export default class GitBranchWidget extends Component { return [{ name: i18n.get('git.branchWidget.fetchingBranches'), isDisabled: true }] } + const { current } = this.props const localBranchItems = localBranches.map(branch => ({ name: branch, icon: 'fa', @@ -99,10 +100,18 @@ export default class GitBranchWidget extends Component { } }) return [ - { name: i18n.get('git.branchWidget.newBranch'), command: () => dispatchCommand('git:new_branch'), - iconElement: (+) }, - { name: i18n.get('git.branchWidget.synchronize'), command: () => this.props.getFetch(), - icon: 'fa' }, + { + name: i18n.get('git.branchWidget.newBranch'), + command: () => dispatchCommand('git:new_branch'), + iconElement: (+), + isDisabled: current === '' || current === undefined + }, + { + name: i18n.get('git.branchWidget.synchronize'), + command: () => this.props.getFetch(), + icon: 'fa', + isDisabled: current === '' || current === undefined + }, { isDivider: true }, { name: i18n.get('git.branchWidget.localBranches'), isDisabled: true }, ...localBranchItems, diff --git a/app/components/Git/GitCommitView.jsx b/app/components/Git/GitCommitView.jsx index cac35346..c54873bc 100644 --- a/app/components/Git/GitCommitView.jsx +++ b/app/components/Git/GitCommitView.jsx @@ -18,11 +18,7 @@ var GitCommitView = ({isWorkingDirClean, ...actionProps}) => { : (
    { - diffFile({ - path, newRef: 'HEAD', oldRef: '~~unstaged~~' - }) - }} + handleClick={path => diffFile({ path, newRef: 'HEAD', oldRef: '~~unstaged~~' })} />
    diff --git a/app/components/Git/GitFileTree.jsx b/app/components/Git/GitFileTree.jsx index d9969e3e..1a337996 100644 --- a/app/components/Git/GitFileTree.jsx +++ b/app/components/Git/GitFileTree.jsx @@ -59,7 +59,7 @@ class _GitFileTreeNode extends Component { return (
    { node.isRoot ? - (
    this.nodeDOM = r} > + (
    this.nodeDOM = r}> { displayOnly ? null : { let ref @@ -29,39 +34,58 @@ const RefTag = ({ value: refName, backgroundColor, borderColor }) => { if (!ref) return null return ( -
    - {ref.name} +
    + + {ref.name}
    ) } -@inject(() => { - return { - commitsState: state.commitsState, - commits: Array.from(state.commitsState.commits.values()), - } -}) +@inject(() => ({ + commitsState: state.commitsState, + commits: Array.from(state.commitsState.commits.values()) +})) @observer +@connect(reduxState => ({ currentBranch: reduxState.GitState.branches.current }), + dispatch => bindActionCreators({ getBranches }, dispatch), + null, + { + withRef: true + } +) class GitGraphTable extends Component { constructor (props) { super(props) fetchRefs() const PAGE_SIZE = 30 + this.onShow = this.onShow.bind(this) fetchCommits({ size: PAGE_SIZE, page: 0 }) this.state = { radius: 4, colWidth: 10, rowHeight: 25, selectedRowIndex: -1, - viewSize: 'small', + viewSize: 'small' } this.crawler = new CommitsCrawler({ commits: state.rawCommits, - size: PAGE_SIZE, + size: PAGE_SIZE }) } + componentDidMount () { + emitter.on(E.GITGRAPH_SHOW, this.onShow) + } + + componentWillUnmount () { + emitter.removeListener(E.GITGRAPH_SHOW, this.onShow) + } + + onShow () { + this.props.getBranches() + } + toggleViewSize = (smallOrLarge) => { if (!smallOrLarge) smallOrLarge = this.state.viewSize === 'small' ? 'large' : 'small' switch (smallOrLarge) { @@ -85,91 +109,118 @@ class GitGraphTable extends Component { render () { const { radius, colWidth, rowHeight } = this.state - const { commits, commitsState } = this.props + const { commits, commitsState, currentBranch } = this.props return ( -
    this.wrapperDOM = r} +
    (this.wrapperDOM = r)} onScroll={this.onVerticalScroll} > -
    -
    - -
    + {currentBranch === '' || currentBranch === undefined ? ( +

    {i18n`git.initPrompt`}

    + ) : ( +
    +
    + +
    - {commits.map((commit, commitIndex) => - this.state.viewSize === 'large' ? - (
    this.setState({ selectedRowIndex: commitIndex })} - > -
    - -
    -
    -
    -
    `}> - {commit.author.name} -
    - {commit.refs.map(ref => - + this.state.viewSize === 'large' ? ( +
    this.setState({ selectedRowIndex: commitIndex })} + > +
    + - )} -
    - {moment(commit.date, 'X').format('YYYY/MM/DD')} +
    +
    +
    +
    `} + > + {commit.author.name} +
    + {commit.refs.map(ref => ( + + ))} +
    + {moment(commit.date, 'X').format('YYYY/MM/DD')} +
    +
    +
    +
    {commit.shortId}
    +
    {commit.message}
    +
    -
    + ) : ( +
    this.setState({ selectedRowIndex: commitIndex })} + >
    {commit.shortId}
    -
    {commit.message}
    +
    + {commit.refs.map(ref => ( + + ))} +
    {commit.message}
    +
    +
    `} + > + {commit.author.name} +
    +
    + {moment(commit.date, 'X').format('MM/DD/YYYY')} +
    -
    -
    ) - - : (
    this.setState({ selectedRowIndex: commitIndex })} - > -
    {commit.shortId}
    -
    - {commit.refs.map(ref => - - )} -
    {commit.message}
    -
    -
    `}> - {commit.author.name} -
    -
    - {moment(commit.date, 'X').format('MM/DD/YYYY')} -
    -
    - ) - )} -
    + ) + )} +
    + )}
    ) } diff --git a/app/components/Git/actions.js b/app/components/Git/actions.js index 14d87dfb..02d978d3 100644 --- a/app/components/Git/actions.js +++ b/app/components/Git/actions.js @@ -6,6 +6,7 @@ import { createAction } from 'redux-actions' import Clipboard from 'clipboard' import i18n from 'utils/createI18n' +import statusBarState from '../StatusBar/state' export const GIT_STATUS = 'GIT_STATUS' export const updateStatus = createAction(GIT_STATUS) @@ -14,19 +15,26 @@ export const GIT_UPDATE_COMMIT_MESSAGE = 'GIT_UPDATE_COMMIT_MESSAGE' export const updateCommitMessage = createAction(GIT_UPDATE_COMMIT_MESSAGE) export function commit () { + statusBarState.displayBar = true return (dispatch, getState) => { const GitState = getState().GitState const stagedFiles = GitState.statusFiles.filter(file => file.isStaged) const stagedFilesPathList = stagedFiles.toArray().map(stagedFile => stagedFile.path.replace(/^\//, '')) const initialCommitMessage = i18n.get('git.commitView.initMessage') - console.log(GitState.commitMessage); return api.gitCommit({ files: stagedFilesPathList, message: GitState.commitMessage || initialCommitMessage, }).then((filetreeDelta) => { + statusBarState.displayBar = false + if (filetreeDelta.code) { + notify({ notifyType: NOTIFY_TYPE.ERROR, message: filetreeDelta.msg }); + return; + } dispatch(updateCommitMessage('')) notify({ message: i18n`git.action.commitSuccess` }) dismissModal() + }).catch(err => { + statusBarState.displayBar = false }) } } @@ -129,20 +137,34 @@ export function getTags () { } export function pull () { + statusBarState.displayBar = true return (dispatch) => { api.gitPull().then((res) => { + statusBarState.displayBar = false notify({ message: 'Git pull success.' }) }).catch((res) => { + statusBarState.displayBar = false notify({ message: `Git pull fail: ${res.response.data.msg}` }) }) } } export function push () { + statusBarState.displayBar = true return (dispatch) => { api.gitPushAll().then((res) => { - notify({ message: 'Git push success.' }) + statusBarState.displayBar = false + if (res.nothingToPush) { + notify({ message: 'Git push fail: nothing to push.' }); + return; + } + if (res.ok) { + notify({ message: 'Git push success.' }); + } else { + notify({ message: `Git push fail: ${res.updates[0].status}` }); + } }).catch((res) => { + statusBarState.displayBar = false notify({ message: `Git push fail: ${res.response.data.msg}` }) }) } @@ -276,11 +298,23 @@ export function addTag ({ tagName, ref, message, force }) { export function mergeBranch (branch) { return dispatch => api.gitMerge(branch).then((res) => { // Merge conflict 的情况也是 200 OK,但 sucecss:false - if (!res.success) return res - notify({ message: 'Merge success.' }) - dismissModal() + if (!res.success) { + return res; + } else { + if (res.status === 'ALREADY_UP_TO_DATE') { + notify({ message: 'Nothing to merge, already up to date.' }) + } else { + notify({ message: 'Merge success.' }) + } + dismissModal(); + } }).then((res) => { - if (res.status && res.status === 'CONFLICTING') { + if (!res) { + return; + } + if (res.status === 'FAILED') { + notify({ message: 'Merge failed.' }); + } else if (res.status === 'CONFLICTING') { dismissModal() api.gitStatus().then(({ files, clean }) => { files = _.filter(files, file => file.status == 'CONFLICTION') @@ -323,6 +357,9 @@ export const selectNode = createAction(GIT_STATUS_SELECT_NODE, node => node) export const GIT_STATUS_STAGE_NODE = 'GIT_STATUS_STAGE_NODE' export const toggleStaging = createAction(GIT_STATUS_STAGE_NODE, node => node) +export const GIT_STATUS_STAGE_ALL = 'GIT_STATUS_STAGE_ALL'; +export const toggleStagingAll = createAction(GIT_STATUS_STAGE_ALL); + export const GIT_MERGE = 'GIT_MERGE' export const gitMerge = createAction(GIT_MERGE) export function mergeFile (path) { diff --git a/app/components/Git/modals/merge.jsx b/app/components/Git/modals/merge.jsx index 9953e7df..029690bb 100644 --- a/app/components/Git/modals/merge.jsx +++ b/app/components/Git/modals/merge.jsx @@ -36,7 +36,7 @@ class GitMergeView extends Component { value={this.state.branchToMerge} style={this.state.selectChanged ? null : { color: '#aaa' }} > - {allBranches.map(branch => )} diff --git a/app/components/Git/modals/mergeFile.jsx b/app/components/Git/modals/mergeFile.jsx index f75aa3c3..ee8e8ce9 100644 --- a/app/components/Git/modals/mergeFile.jsx +++ b/app/components/Git/modals/mergeFile.jsx @@ -3,6 +3,7 @@ import PropTypes from 'prop-types' import { bindActionCreators } from 'redux' import { dispatchCommand } from '../../../commands' import cx from 'classnames' +import { inject } from 'mobx-react' import { connect } from 'react-redux' import * as GitActions from '../actions' import i18n from 'utils/createI18n' @@ -16,6 +17,9 @@ require(['diff_match_patch'], (lib) => { }) import 'codemirror/addon/merge/merge.css' +@inject(state => ({ + themeName: state.SettingState.settings.appearance.syntax_theme.value, +})) class GitMergeView extends Component { static defaultProps = { mode: null, @@ -95,6 +99,7 @@ class GitMergeView extends Component { origLeft: data.local, orig: data.remote, value: data.base, + theme: this.props.themeName, revertButtons: true, }) this.mergeView.wrap.style.height = '100%' diff --git a/app/components/Git/modals/tag.jsx b/app/components/Git/modals/tag.jsx index ff65c0bc..45fcedba 100644 --- a/app/components/Git/modals/tag.jsx +++ b/app/components/Git/modals/tag.jsx @@ -31,27 +31,25 @@ class GitTagView extends Component {

    {i18n`git.tag.title`}


    -
    - - +
    + +
    -
    - - +
    + + {if (e.keyCode === 13) { + e.preventDefault() + this.addTag() + }}} + />
    -
    - -
    '},t.prototype._actualRenderOneSelection=function(e,n,i,o){for(var r=o.length>0&&o[0].ranges[0].startStyle,s=this._lineHeight.toString(),a=(this._lineHeight-1).toString(),l=o.length>0?o[0].lineNumber:0,u=o.length>0?o[o.length-1].lineNumber:0,d=0,c=o.length;d1,u)}}this._previousFrameVisibleRangesWithStyle=r,this._renderResult=t},t.prototype.render=function(e,t){if(!this._renderResult)return"";var n=t-e;return n<0||n>=this._renderResult.length?"":this._renderResult[n]},t.SELECTION_CLASS_NAME="selected-text",t.SELECTION_TOP_LEFT="top-left-radius",t.SELECTION_BOTTOM_LEFT="bottom-left-radius",t.SELECTION_TOP_RIGHT="top-right-radius",t.SELECTION_BOTTOM_RIGHT="bottom-right-radius",t.EDITOR_BACKGROUND_CLASS_NAME="monaco-editor-background",t.ROUNDED_PIECE_WIDTH=10,t}(r.DynamicViewOverlay);t.SelectionsOverlay=p,n.registerThemingParticipant(function(e,t){var n=e.getColor(i.editorSelectionBackground);n&&t.addRule(".monaco-editor .focused .selected-text { background-color: "+n+"; }");var o=e.getColor(i.editorInactiveSelection) +;o&&t.addRule(".monaco-editor .selected-text { background-color: "+o+"; }");var r=e.getColor(i.editorSelectionForeground);r&&t.addRule(".monaco-editor .view-line span.inline-selected-text { color: "+r+"; }")})}),define(t[35],n([1,0,302,22,16,27]),function(e,t,n,i,o,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.editorLineHighlight=i.registerColor("editor.lineHighlightBackground",{dark:null,light:null,hc:null},n.localize(0,null)),t.editorLineHighlightBorder=i.registerColor("editor.lineHighlightBorder",{dark:"#282828",light:"#eeeeee",hc:"#f38518"},n.localize(1,null)),t.editorRangeHighlight=i.registerColor("editor.rangeHighlightBackground",{dark:"#ffffff0b",light:"#fdff0033",hc:null},n.localize(2,null),!0),t.editorRangeHighlightBorder=i.registerColor("editor.rangeHighlightBorder",{dark:null,light:null,hc:i.activeContrastBorder},n.localize(3,null),!0),t.editorCursorForeground=i.registerColor("editorCursor.foreground",{dark:"#AEAFAD",light:r.Color.black,hc:r.Color.white},n.localize(4,null)), +t.editorCursorBackground=i.registerColor("editorCursor.background",null,n.localize(5,null)),t.editorWhitespaces=i.registerColor("editorWhitespace.foreground",{dark:"#e3e4e229",light:"#33333333",hc:"#e3e4e229"},n.localize(6,null)),t.editorIndentGuides=i.registerColor("editorIndentGuide.background",{dark:t.editorWhitespaces,light:t.editorWhitespaces,hc:t.editorWhitespaces},n.localize(7,null)),t.editorActiveIndentGuides=i.registerColor("editorIndentGuide.activeBackground",{dark:t.editorWhitespaces,light:t.editorWhitespaces,hc:t.editorWhitespaces},n.localize(8,null)),t.editorLineNumbers=i.registerColor("editorLineNumber.foreground",{dark:"#858585",light:"#237893",hc:r.Color.white},n.localize(9,null));var s=i.registerColor("editorActiveLineNumber.foreground",{dark:"#c6c6c6",light:"#0B216F",hc:i.activeContrastBorder},n.localize(10,null),!1,n.localize(11,null));t.editorActiveLineNumber=i.registerColor("editorLineNumber.activeForeground",{dark:s,light:s,hc:s},n.localize(12,null)), +t.editorRuler=i.registerColor("editorRuler.foreground",{dark:"#5A5A5A",light:r.Color.lightgrey,hc:r.Color.white},n.localize(13,null)),t.editorCodeLensForeground=i.registerColor("editorCodeLens.foreground",{dark:"#999999",light:"#999999",hc:"#999999"},n.localize(14,null)),t.editorBracketMatchBackground=i.registerColor("editorBracketMatch.background",{dark:"#0064001a",light:"#0064001a",hc:"#0064001a"},n.localize(15,null)),t.editorBracketMatchBorder=i.registerColor("editorBracketMatch.border",{dark:"#888",light:"#B9B9B9",hc:"#fff"},n.localize(16,null)),t.editorOverviewRulerBorder=i.registerColor("editorOverviewRuler.border",{dark:"#7f7f7f4d",light:"#7f7f7f4d",hc:"#7f7f7f4d"},n.localize(17,null)),t.editorGutter=i.registerColor("editorGutter.background",{dark:i.editorBackground,light:i.editorBackground,hc:i.editorBackground},n.localize(18,null)),t.editorErrorForeground=i.registerColor("editorError.foreground",{dark:"#ea4646",light:"#d60a0a",hc:null},n.localize(19,null)), +t.editorErrorBorder=i.registerColor("editorError.border",{dark:null,light:null,hc:r.Color.fromHex("#E47777").transparent(.8)},n.localize(20,null)),t.editorWarningForeground=i.registerColor("editorWarning.foreground",{dark:"#4d9e4d",light:"#117711",hc:null},n.localize(21,null)),t.editorWarningBorder=i.registerColor("editorWarning.border",{dark:null,light:null,hc:r.Color.fromHex("#71B771").transparent(.8)},n.localize(22,null)),t.editorInfoForeground=i.registerColor("editorInfo.foreground",{dark:"#008000",light:"#008000",hc:null},n.localize(23,null)),t.editorInfoBorder=i.registerColor("editorInfo.border",{dark:null,light:null,hc:r.Color.fromHex("#71B771").transparent(.8)},n.localize(24,null)),t.editorHintForeground=i.registerColor("editorHint.foreground",{dark:r.Color.fromHex("#eeeeee").transparent(.7),light:"#6c6c6c",hc:null},n.localize(25,null)),t.editorHintBorder=i.registerColor("editorHint.border",{dark:null,light:null,hc:r.Color.fromHex("#eeeeee").transparent(.8)},n.localize(26,null)), +t.editorUnnecessaryCodeBorder=i.registerColor("editorUnnecessaryCode.border",{dark:null,light:null,hc:r.Color.fromHex("#fff").transparent(.8)},n.localize(27,null)),t.editorUnnecessaryCodeOpacity=i.registerColor("editorUnnecessaryCode.opacity",{dark:r.Color.fromHex("#000a"),light:r.Color.fromHex("#0007"),hc:null},n.localize(28,null)),t.overviewRulerError=i.registerColor("editorOverviewRuler.errorForeground",{dark:new r.Color(new r.RGBA(255,18,18,.7)),light:new r.Color(new r.RGBA(255,18,18,.7)),hc:new r.Color(new r.RGBA(255,50,50,1))},n.localize(29,null)),t.overviewRulerWarning=i.registerColor("editorOverviewRuler.warningForeground",{dark:new r.Color(new r.RGBA(18,136,18,.7)),light:new r.Color(new r.RGBA(18,136,18,.7)),hc:new r.Color(new r.RGBA(50,255,50,1))},n.localize(30,null)),t.overviewRulerInfo=i.registerColor("editorOverviewRuler.infoForeground",{dark:new r.Color(new r.RGBA(18,18,136,.7)),light:new r.Color(new r.RGBA(18,18,136,.7)),hc:new r.Color(new r.RGBA(50,50,255,1))},n.localize(31,null)), +o.registerThemingParticipant(function(e,n){var o=e.getColor(i.editorBackground);o&&n.addRule(".monaco-editor, .monaco-editor-background, .monaco-editor .inputarea.ime-input { background-color: "+o+"; }");var r=e.getColor(i.editorForeground);r&&n.addRule(".monaco-editor, .monaco-editor .inputarea.ime-input { color: "+r+"; }");var s=e.getColor(t.editorGutter);s&&n.addRule(".monaco-editor .margin { background-color: "+s+"; }");var a=e.getColor(t.editorRangeHighlight);a&&n.addRule(".monaco-editor .rangeHighlight { background-color: "+a+"; }");var l=e.getColor(t.editorRangeHighlightBorder);l&&n.addRule(".monaco-editor .rangeHighlight { border: 1px "+("hc"===e.type?"dotted":"solid")+" "+l+"; }");var u=e.getColor(t.editorWhitespaces);u&&n.addRule(".vs-whitespace { color: "+u+" !important; }")})}),define(t[496],n([1,0,59,16,35,262]),function(e,t,n,i,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s=function(e){function t(t){var n=e.call(this)||this;return n._context=t, +n._lineHeight=n._context.configuration.editor.lineHeight,n._renderLineHighlight=n._context.configuration.editor.viewInfo.renderLineHighlight,n._selectionIsEmpty=!0,n._primaryCursorLineNumber=1,n._scrollWidth=0,n._contentWidth=n._context.configuration.editor.layoutInfo.contentWidth,n._context.addEventHandler(n),n}return o(t,e),t.prototype.dispose=function(){this._context.removeEventHandler(this),this._context=null,e.prototype.dispose.call(this)},t.prototype.onConfigurationChanged=function(e){return e.lineHeight&&(this._lineHeight=this._context.configuration.editor.lineHeight),e.viewInfo&&(this._renderLineHighlight=this._context.configuration.editor.viewInfo.renderLineHighlight),e.layoutInfo&&(this._contentWidth=this._context.configuration.editor.layoutInfo.contentWidth),!0},t.prototype.onCursorStateChanged=function(e){var t=!1,n=e.selections[0].positionLineNumber;this._primaryCursorLineNumber!==n&&(this._primaryCursorLineNumber=n,t=!0);var i=e.selections[0].isEmpty() +;return this._selectionIsEmpty!==i?(this._selectionIsEmpty=i,t=!0,!0):t},t.prototype.onFlushed=function(e){return!0},t.prototype.onLinesDeleted=function(e){return!0},t.prototype.onLinesInserted=function(e){return!0},t.prototype.onScrollChanged=function(e){return e.scrollWidthChanged},t.prototype.onZonesChanged=function(e){return!0},t.prototype.prepareRender=function(e){this._scrollWidth=e.scrollWidth},t.prototype.render=function(e,t){if(t===this._primaryCursorLineNumber){if(this._shouldShowCurrentLine()){return'
    '}return""}return""},t.prototype._shouldShowCurrentLine=function(){return("line"===this._renderLineHighlight||"all"===this._renderLineHighlight)&&this._selectionIsEmpty},t.prototype._willRenderMarginCurrentLine=function(){ +return"gutter"===this._renderLineHighlight||"all"===this._renderLineHighlight},t}(n.DynamicViewOverlay);t.CurrentLineHighlightOverlay=s,i.registerThemingParticipant(function(e,t){var n=e.getColor(r.editorLineHighlight);if(n&&t.addRule(".monaco-editor .view-overlays .current-line { background-color: "+n+"; }"),!n||n.isTransparent()||e.defines(r.editorLineHighlightBorder)){var i=e.getColor(r.editorLineHighlightBorder);i&&(t.addRule(".monaco-editor .view-overlays .current-line { border: 2px solid "+i+"; }"),"hc"===e.type&&t.addRule(".monaco-editor .view-overlays .current-line { border-width: 1px; }"))}})}),define(t[497],n([1,0,59,16,35,263]),function(e,t,n,i,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s=function(e){function t(t){var n=e.call(this)||this;return n._context=t,n._lineHeight=n._context.configuration.editor.lineHeight,n._renderLineHighlight=n._context.configuration.editor.viewInfo.renderLineHighlight,n._selectionIsEmpty=!0,n._primaryCursorLineNumber=1, +n._contentLeft=n._context.configuration.editor.layoutInfo.contentLeft,n._context.addEventHandler(n),n}return o(t,e),t.prototype.dispose=function(){this._context.removeEventHandler(this),this._context=null,e.prototype.dispose.call(this)},t.prototype.onConfigurationChanged=function(e){return e.lineHeight&&(this._lineHeight=this._context.configuration.editor.lineHeight),e.viewInfo&&(this._renderLineHighlight=this._context.configuration.editor.viewInfo.renderLineHighlight),e.layoutInfo&&(this._contentLeft=this._context.configuration.editor.layoutInfo.contentLeft),!0},t.prototype.onCursorStateChanged=function(e){var t=!1,n=e.selections[0].positionLineNumber;this._primaryCursorLineNumber!==n&&(this._primaryCursorLineNumber=n,t=!0);var i=e.selections[0].isEmpty();return this._selectionIsEmpty!==i?(this._selectionIsEmpty=i,t=!0,!0):t},t.prototype.onFlushed=function(e){return!0},t.prototype.onLinesDeleted=function(e){return!0},t.prototype.onLinesInserted=function(e){return!0},t.prototype.onZonesChanged=function(e){ +return!0},t.prototype.prepareRender=function(e){},t.prototype.render=function(e,t){if(t===this._primaryCursorLineNumber){var n="current-line";if(this._shouldShowCurrentLine()){n="current-line current-line-margin"+(this._willRenderContentCurrentLine()?" current-line-margin-both":"")}return'
    '}return""},t.prototype._shouldShowCurrentLine=function(){return"gutter"===this._renderLineHighlight||"all"===this._renderLineHighlight},t.prototype._willRenderContentCurrentLine=function(){return("line"===this._renderLineHighlight||"all"===this._renderLineHighlight)&&this._selectionIsEmpty},t}(n.DynamicViewOverlay);t.CurrentLineMarginHighlightOverlay=s,i.registerThemingParticipant(function(e,t){var n=e.getColor(r.editorLineHighlight);if(n)t.addRule(".monaco-editor .margin-view-overlays .current-line-margin { background-color: "+n+"; border: none; }");else{var i=e.getColor(r.editorLineHighlightBorder) +;i&&t.addRule(".monaco-editor .margin-view-overlays .current-line-margin { border: 2px solid "+i+"; }"),"hc"===e.type&&t.addRule(".monaco-editor .margin-view-overlays .current-line-margin { border-width: 1px; }")}})}),define(t[498],n([1,0,59,16,35,12,268]),function(e,t,n,i,r,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=function(e){function t(t){var n=e.call(this)||this;return n._context=t,n._primaryLineNumber=0,n._lineHeight=n._context.configuration.editor.lineHeight,n._spaceWidth=n._context.configuration.editor.fontInfo.spaceWidth,n._enabled=n._context.configuration.editor.viewInfo.renderIndentGuides,n._activeIndentEnabled=n._context.configuration.editor.viewInfo.highlightActiveIndentGuide,n._renderResult=null,n._context.addEventHandler(n),n}return o(t,e),t.prototype.dispose=function(){this._context.removeEventHandler(this),this._context=null,this._renderResult=null,e.prototype.dispose.call(this)},t.prototype.onConfigurationChanged=function(e){ +return e.lineHeight&&(this._lineHeight=this._context.configuration.editor.lineHeight),e.fontInfo&&(this._spaceWidth=this._context.configuration.editor.fontInfo.spaceWidth),e.viewInfo&&(this._enabled=this._context.configuration.editor.viewInfo.renderIndentGuides,this._activeIndentEnabled=this._context.configuration.editor.viewInfo.highlightActiveIndentGuide),!0},t.prototype.onCursorStateChanged=function(e){var t=e.selections[0],n=t.isEmpty()?t.positionLineNumber:0;return this._primaryLineNumber!==n&&(this._primaryLineNumber=n,!0)},t.prototype.onDecorationsChanged=function(e){return!0},t.prototype.onFlushed=function(e){return!0},t.prototype.onLinesChanged=function(e){return!0},t.prototype.onLinesDeleted=function(e){return!0},t.prototype.onLinesInserted=function(e){return!0},t.prototype.onScrollChanged=function(e){return e.scrollTopChanged},t.prototype.onZonesChanged=function(e){return!0},t.prototype.onLanguageConfigurationChanged=function(e){return!0},t.prototype.prepareRender=function(e){if(this._enabled){ +var t=e.visibleRange.startLineNumber,n=e.visibleRange.endLineNumber,i=this._context.model.getTabSize()*this._spaceWidth,o=e.scrollWidth,r=this._lineHeight,a=i,l=this._context.model.getLinesIndentGuides(t,n),u=0,d=0,c=0;if(this._activeIndentEnabled&&this._primaryLineNumber){var h=this._context.model.getActiveIndentGuide(this._primaryLineNumber,t,n);u=h.startLineNumber,d=h.endLineNumber,c=h.indent}for(var p=[],f=t;f<=n;f++){for(var g=u<=f&&f<=d,m=f-t,v=l[m],_="",y=e.visibleRangeForPosition(new s.Position(f,1)),C=y?y.left:0,b=1;b<=v;b++){if(_+='
    ',(C+=i)>o)break}p[m]=_}this._renderResult=p}else this._renderResult=null},t.prototype.render=function(e,t){if(!this._renderResult)return"";var n=t-e;return n<0||n>=this._renderResult.length?"":this._renderResult[n]},t}(n.DynamicViewOverlay);t.IndentGuidesOverlay=a,i.registerThemingParticipant(function(e,t){var n=e.getColor(r.editorIndentGuides) +;n&&t.addRule(".monaco-editor .lines-content .cigr { box-shadow: 1px 0 0 0 "+n+" inset; }");var i=e.getColor(r.editorActiveIndentGuides)||n;i&&t.addRule(".monaco-editor .lines-content .cigra { box-shadow: 1px 0 0 0 "+i+" inset; }")})}),define(t[186],n([1,0,35,16,18,59,12,270]),function(e,t,n,i,r,s,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var l=function(e){function t(t){var n=e.call(this)||this;return n._context=t,n._readConfig(),n._lastCursorModelPosition=new a.Position(1,1),n._renderResult=null,n._context.addEventHandler(n),n}return o(t,e),t.prototype._readConfig=function(){var e=this._context.configuration.editor;this._lineHeight=e.lineHeight,this._renderLineNumbers=e.viewInfo.renderLineNumbers,this._renderCustomLineNumbers=e.viewInfo.renderCustomLineNumbers,this._lineNumbersLeft=e.layoutInfo.lineNumbersLeft,this._lineNumbersWidth=e.layoutInfo.lineNumbersWidth},t.prototype.dispose=function(){this._context.removeEventHandler(this),this._context=null,this._renderResult=null, +e.prototype.dispose.call(this)},t.prototype.onConfigurationChanged=function(e){return this._readConfig(),!0},t.prototype.onCursorStateChanged=function(e){var t=e.selections[0].getPosition();return this._lastCursorModelPosition=this._context.model.coordinatesConverter.convertViewPositionToModelPosition(t),2===this._renderLineNumbers||3===this._renderLineNumbers},t.prototype.onFlushed=function(e){return!0},t.prototype.onLinesChanged=function(e){return!0},t.prototype.onLinesDeleted=function(e){return!0},t.prototype.onLinesInserted=function(e){return!0},t.prototype.onScrollChanged=function(e){return e.scrollTopChanged},t.prototype.onZonesChanged=function(e){return!0},t.prototype._getLineRenderLineNumber=function(e){var t=this._context.model.coordinatesConverter.convertViewPositionToModelPosition(new a.Position(e,1));if(1!==t.column)return"";var n=t.lineNumber;if(this._renderCustomLineNumbers)return this._renderCustomLineNumbers(n);if(2===this._renderLineNumbers){ +var i=Math.abs(this._lastCursorModelPosition.lineNumber-n);return 0===i?''+n+"":String(i)}return 3===this._renderLineNumbers?this._lastCursorModelPosition.lineNumber===n?String(n):n%10==0?String(n):"":String(n)},t.prototype.prepareRender=function(e){if(0!==this._renderLineNumbers){for(var n=r.isLinux?this._lineHeight%2==0?" lh-even":" lh-odd":"",i=e.visibleRange.startLineNumber,o=e.visibleRange.endLineNumber,s='
    ',a=[],l=i;l<=o;l++){var u=l-i,d=this._getLineRenderLineNumber(l);a[u]=d?s+d+"
    ":""}this._renderResult=a}else this._renderResult=null},t.prototype.render=function(e,t){if(!this._renderResult)return"";var n=t-e;return n<0||n>=this._renderResult.length?"":this._renderResult[n]},t.CLASS_NAME="line-numbers",t}(s.DynamicViewOverlay);t.LineNumbersOverlay=l,i.registerThemingParticipant(function(e,t){ +var i=e.getColor(n.editorLineNumbers);i&&t.addRule(".monaco-editor .line-numbers { color: "+i+"; }");var o=e.getColor(n.editorActiveLineNumber);o&&t.addRule(".monaco-editor .current-line ~ .line-numbers { color: "+o+"; }")})}),define(t[500],n([1,0,18,30,6,165,164,3,21,12,65,78,26,36,163,186,89,254]),function(e,t,n,i,r,s,a,l,u,d,c,h,p,f,g,m,v){"use strict";function _(e,t){var n=document.createElement("canvas").getContext("2d");n.font=function(e){return function(e,t,n,i,o){return e+" normal "+t+" "+n+"px / "+i+"px "+o}("normal",e.fontWeight,e.fontSize,e.lineHeight,e.fontFamily)}(t);var o=n.measureText(e);return i.isFirefox?o.width+2:o.width}Object.defineProperty(t,"__esModule",{value:!0});var y=function(){function e(e,t,n){this.top=e,this.left=t,this.width=n}return e.prototype.setWidth=function(t){return new e(this.top,this.left,t)},e}(),C=i.isEdgeOrIE||i.isFirefox,b=function(){function e(){this._lastState=null}return e.prototype.set=function(e){this._lastState=e},e.prototype.get=function(e){ +return this._lastState&&this._lastState.lastCopiedValue===e?this._lastState:(this._lastState=null,null)},e.INSTANCE=new e,e}(),S=function(e){function t(t,o,r){var d=e.call(this,t)||this;d._primaryCursorVisibleRange=null,d._viewController=o,d._viewHelper=r;var c=d._context.configuration.editor;d._accessibilitySupport=c.accessibilitySupport,d._contentLeft=c.layoutInfo.contentLeft,d._contentWidth=c.layoutInfo.contentWidth,d._contentHeight=c.layoutInfo.contentHeight,d._scrollLeft=0,d._scrollTop=0,d._fontInfo=c.fontInfo,d._lineHeight=c.lineHeight,d._emptySelectionClipboard=c.emptySelectionClipboard,d._visibleTextArea=null,d._selections=[new u.Selection(1,1,1,1)],d.textArea=p.createFastDomNode(document.createElement("textarea")),f.PartFingerprints.write(d.textArea,6),d.textArea.setClassName("inputarea"),d.textArea.setAttribute("wrap","off"),d.textArea.setAttribute("autocorrect","off"),d.textArea.setAttribute("autocapitalize","off"),d.textArea.setAttribute("autocomplete","off"), +d.textArea.setAttribute("spellcheck","false"),d.textArea.setAttribute("aria-label",c.viewInfo.ariaLabel),d.textArea.setAttribute("role","textbox"),d.textArea.setAttribute("aria-multiline","true"),d.textArea.setAttribute("aria-haspopup","false"),d.textArea.setAttribute("aria-autocomplete","both"),d.textAreaCover=p.createFastDomNode(document.createElement("div")),d.textAreaCover.setPosition("absolute");var g={getLineCount:function(){return d._context.model.getLineCount()},getLineMaxColumn:function(e){return d._context.model.getLineMaxColumn(e)},getValueInRange:function(e,t){return d._context.model.getValueInRange(e,t)}},m={getPlainTextToCopy:function(){var e=d._context.model.getPlainTextToCopy(d._selections,d._emptySelectionClipboard,n.isWindows),t=d._context.model.getEOL(),o=d._emptySelectionClipboard&&1===d._selections.length&&d._selections[0].isEmpty(),r=Array.isArray(e)?e:null,s=Array.isArray(e)?e.join(t):e,a=null;if(o||r){a={lastCopiedValue:i.isFirefox?s.replace(/\r\n/g,"\n"):s, +isFromEmptySelection:d._emptySelectionClipboard&&1===d._selections.length&&d._selections[0].isEmpty(),multicursorText:r}}return b.INSTANCE.set(a),s},getHTMLToCopy:function(){return d._context.model.getHTMLToCopy(d._selections,d._emptySelectionClipboard)},getScreenReaderContent:function(e){if(i.isIPad)return a.TextAreaState.EMPTY;if(1===d._accessibilitySupport){if(n.isMacintosh){var t=d._selections[0];if(t.isEmpty()){var o=t.getStartPosition(),r=d._getWordBeforePosition(o);if(0===r.length&&(r=d._getCharacterBeforePosition(o)),r.length>0)return new a.TextAreaState(r,r.length,r.length,o,o)}}return a.TextAreaState.EMPTY}return a.PagedScreenReaderStrategy.fromEditorSelection(e,g,d._selections[0],0===d._accessibilitySupport)},deduceModelPosition:function(e,t,n){return d._context.model.deduceModelPositionRelativeToViewPosition(e,t,n)}};return d._textAreaInput=d._register(new s.TextAreaInput(m,d.textArea)),d._register(d._textAreaInput.onKeyDown(function(e){d._viewController.emitKeyDown(e)})), +d._register(d._textAreaInput.onKeyUp(function(e){d._viewController.emitKeyUp(e)})),d._register(d._textAreaInput.onPaste(function(e){var t=b.INSTANCE.get(e.text),n=!1,i=null;t&&(n=d._emptySelectionClipboard&&t.isFromEmptySelection,i=t.multicursorText),d._viewController.paste("keyboard",e.text,n,i)})),d._register(d._textAreaInput.onCut(function(){d._viewController.cut("keyboard")})),d._register(d._textAreaInput.onType(function(e){e.replaceCharCnt?d._viewController.replacePreviousChar("keyboard",e.text,e.replaceCharCnt):d._viewController.type("keyboard",e.text)})),d._register(d._textAreaInput.onSelectionChangeRequest(function(e){d._viewController.setSelection("keyboard",e)})),d._register(d._textAreaInput.onCompositionStart(function(){var e=d._selections[0].startLineNumber,t=d._selections[0].startColumn;d._context.privateViewEventBus.emit(new h.ViewRevealRangeRequestEvent(new l.Range(e,t,e,t),0,!0,1));var n=d._viewHelper.visibleRangeForPositionRelativeToEditor(e,t) +;n&&(d._visibleTextArea=new y(d._context.viewLayout.getVerticalOffsetForLineNumber(e),n.left,C?0:1),d._render()),d.textArea.setClassName("inputarea ime-input"),d._viewController.compositionStart("keyboard")})),d._register(d._textAreaInput.onCompositionUpdate(function(e){i.isEdgeOrIE?d._visibleTextArea=d._visibleTextArea.setWidth(0):d._visibleTextArea=d._visibleTextArea.setWidth(_(e.data,d._fontInfo)),d._render()})),d._register(d._textAreaInput.onCompositionEnd(function(){d._visibleTextArea=null,d._render(),d.textArea.setClassName("inputarea"),d._viewController.compositionEnd("keyboard")})),d._register(d._textAreaInput.onFocus(function(){d._context.privateViewEventBus.emit(new h.ViewFocusChangedEvent(!0))})),d._register(d._textAreaInput.onBlur(function(){d._context.privateViewEventBus.emit(new h.ViewFocusChangedEvent(!1))})),d}return o(t,e),t.prototype.dispose=function(){e.prototype.dispose.call(this)},t.prototype._getWordBeforePosition=function(e){ +for(var t=this._context.model.getLineContent(e.lineNumber),n=v.getMapForWordSeparators(this._context.configuration.editor.wordSeparators),i=e.column,o=0;i>1;){var r=t.charCodeAt(i-2);if(0!==n.get(r)||o>50)return t.substring(i-1,e.column-1);o++,i--}return t.substring(0,e.column-1)},t.prototype._getCharacterBeforePosition=function(e){if(e.column>1){var t=this._context.model.getLineContent(e.lineNumber).charAt(e.column-2);if(!r.isHighSurrogate(t.charCodeAt(0)))return t}return""},t.prototype.onConfigurationChanged=function(e){var t=this._context.configuration.editor;return e.fontInfo&&(this._fontInfo=t.fontInfo),e.viewInfo&&this.textArea.setAttribute("aria-label",t.viewInfo.ariaLabel),e.layoutInfo&&(this._contentLeft=t.layoutInfo.contentLeft,this._contentWidth=t.layoutInfo.contentWidth,this._contentHeight=t.layoutInfo.contentHeight),e.lineHeight&&(this._lineHeight=t.lineHeight),e.accessibilitySupport&&(this._accessibilitySupport=t.accessibilitySupport, +this._textAreaInput.writeScreenReaderContent("strategy changed")),e.emptySelectionClipboard&&(this._emptySelectionClipboard=t.emptySelectionClipboard),!0},t.prototype.onCursorStateChanged=function(e){return this._selections=e.selections.slice(0),this._textAreaInput.writeScreenReaderContent("selection changed"),!0},t.prototype.onDecorationsChanged=function(e){return!0},t.prototype.onFlushed=function(e){return!0},t.prototype.onLinesChanged=function(e){return!0},t.prototype.onLinesDeleted=function(e){return!0},t.prototype.onLinesInserted=function(e){return!0},t.prototype.onScrollChanged=function(e){return this._scrollLeft=e.scrollLeft,this._scrollTop=e.scrollTop,!0},t.prototype.onZonesChanged=function(e){return!0},t.prototype.isFocused=function(){return this._textAreaInput.isFocused()},t.prototype.focusTextArea=function(){this._textAreaInput.focusTextArea()},t.prototype.prepareRender=function(e){if(2===this._accessibilitySupport)this._primaryCursorVisibleRange=null;else{ +var t=new d.Position(this._selections[0].positionLineNumber,this._selections[0].positionColumn);this._primaryCursorVisibleRange=e.visibleRangeForPosition(t)}},t.prototype.render=function(e){this._textAreaInput.writeScreenReaderContent("render"),this._render()},t.prototype._render=function(){if(this._visibleTextArea)this._renderInsideEditor(this._visibleTextArea.top-this._scrollTop,this._contentLeft+this._visibleTextArea.left-this._scrollLeft,this._visibleTextArea.width,this._lineHeight,!0);else if(this._primaryCursorVisibleRange){var e=this._contentLeft+this._primaryCursorVisibleRange.left-this._scrollLeft;if(ethis._contentLeft+this._contentWidth)this._renderAtTopLeft();else{var t=this._context.viewLayout.getVerticalOffsetForLineNumber(this._selections[0].positionLineNumber)-this._scrollTop;t<0||t>this._contentHeight?this._renderAtTopLeft():this._renderInsideEditor(t,e,C?0:1,C?0:1,!1)}}else this._renderAtTopLeft()},t.prototype._renderInsideEditor=function(e,t,n,i,o){ +var r=this.textArea,s=this.textAreaCover;o?c.Configuration.applyFontInfo(r,this._fontInfo):(r.setFontSize(1),r.setLineHeight(this._fontInfo.lineHeight)),r.setTop(e),r.setLeft(t),r.setWidth(n),r.setHeight(i),s.setTop(0),s.setLeft(0),s.setWidth(0),s.setHeight(0)},t.prototype._renderAtTopLeft=function(){var e=this.textArea,t=this.textAreaCover;if(c.Configuration.applyFontInfo(e,this._fontInfo),e.setTop(0),e.setLeft(0),t.setTop(0),t.setLeft(0),C)return e.setWidth(0),e.setHeight(0),t.setWidth(0),void t.setHeight(0);e.setWidth(1),e.setHeight(1),t.setWidth(1),t.setHeight(1),this._context.configuration.editor.viewInfo.glyphMargin?t.setClassName("monaco-editor-background textAreaCover "+g.Margin.OUTER_CLASS_NAME):0!==this._context.configuration.editor.viewInfo.renderLineNumbers?t.setClassName("monaco-editor-background textAreaCover "+m.LineNumbersOverlay.CLASS_NAME):t.setClassName("monaco-editor-background textAreaCover")},t}(f.ViewPart);t.TextAreaHandler=S}), +define(t[501],n([1,0,36,12,17,35,27,26]),function(e,t,n,i,r,s,a,l){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var u=function(){function e(e,t){this.lineHeight=e.editor.lineHeight,this.pixelRatio=e.editor.pixelRatio,this.overviewRulerLanes=e.editor.viewInfo.overviewRulerLanes,this.renderBorder=e.editor.viewInfo.overviewRulerBorder;var n=t.getColor(s.editorOverviewRulerBorder);this.borderColor=n?n.toString():null,this.hideCursor=e.editor.viewInfo.hideCursorInOverviewRuler;var i=t.getColor(s.editorCursorForeground);this.cursorColor=i?i.transparent(.7).toString():null,this.themeType=t.type;var o=e.editor.viewInfo.minimap.enabled,l=e.editor.viewInfo.minimap.side,u=o?r.TokenizationRegistry.getDefaultBackground():null;this.backgroundColor=null===u||"left"===l?null:a.Color.Format.CSS.formatHex(u);var d=e.editor.layoutInfo.overviewRuler;this.top=d.top,this.right=d.right,this.domWidth=d.width,this.domHeight=d.height,this.canvasWidth=this.domWidth*this.pixelRatio|0, +this.canvasHeight=this.domHeight*this.pixelRatio|0;var c=this._initLanes(1,this.canvasWidth,this.overviewRulerLanes),h=c[0],p=c[1];this.x=h,this.w=p}return e.prototype._initLanes=function(e,t,n){var i=t-e;if(n>=3){var o=i-(s=Math.floor(i/3))-(a=Math.floor(i/3)),r=(l=e)+s;return[[0,l,r,l,u=l+s+o,l,r,l],[0,s,o,s+o,a,s+o+a,o+a,s+o+a]]}if(2===n){var s=Math.floor(i/2),a=i-s,l=e,u=l+s;return[[0,l,l,l,u,l,l,l],[0,s,s,s,a,s+a,s+a,s+a]]}var d=e,c=i;return[[0,d,d,d,d,d,d,d],[0,c,c,c,c,c,c,c]]},e.prototype.equals=function(e){return this.lineHeight===e.lineHeight&&this.pixelRatio===e.pixelRatio&&this.overviewRulerLanes===e.overviewRulerLanes&&this.renderBorder===e.renderBorder&&this.borderColor===e.borderColor&&this.hideCursor===e.hideCursor&&this.cursorColor===e.cursorColor&&this.themeType===e.themeType&&this.backgroundColor===e.backgroundColor&&this.top===e.top&&this.right===e.right&&this.domWidth===e.domWidth&&this.domHeight===e.domHeight&&this.canvasWidth===e.canvasWidth&&this.canvasHeight===e.canvasHeight},e +}(),d=function(e){function t(t){var n=e.call(this,t)||this;return n._domNode=l.createFastDomNode(document.createElement("canvas")),n._domNode.setClassName("decorationsOverviewRuler"),n._domNode.setPosition("absolute"),n._domNode.setLayerHinting(!0),n._domNode.setAttribute("aria-hidden","true"),n._settings=null,n._updateSettings(!1),n._tokensColorTrackerListener=r.TokenizationRegistry.onDidChange(function(e){e.changedColorMap&&n._updateSettings(!0)}),n._cursorPositions=[],n}return o(t,e),t.prototype.dispose=function(){e.prototype.dispose.call(this),this._tokensColorTrackerListener.dispose()},t.prototype._updateSettings=function(e){var t=new u(this._context.configuration,this._context.theme);return(null===this._settings||!this._settings.equals(t))&&(this._settings=t,this._domNode.setTop(this._settings.top),this._domNode.setRight(this._settings.right),this._domNode.setWidth(this._settings.domWidth),this._domNode.setHeight(this._settings.domHeight),this._domNode.domNode.width=this._settings.canvasWidth, +this._domNode.domNode.height=this._settings.canvasHeight,e&&this._render(),!0)},t.prototype.onConfigurationChanged=function(e){return this._updateSettings(!1)},t.prototype.onCursorStateChanged=function(e){this._cursorPositions=[];for(var t=0,n=e.selections.length;tt&&(D=t-a),E=D-a,T=D+a}E>_+1||b!==m?(0!==y&&l.fillRect(u[m],v,d[m],_-v),m=b,v=E,_=T):T>_&&(_=T)}l.fillRect(u[m],v,d[m],_-v)}if(!this._settings.hideCursor){var L=2*this._settings.pixelRatio|0,x=L/2|0,N=this._settings.x[7],I=this._settings.w[7] +;l.fillStyle=this._settings.cursorColor;for(var v=-100,_=-100,y=0,C=this._cursorPositions.length;yt&&(D=t-x);var T=(E=D-x)+L;E>_+1?(0!==y&&l.fillRect(N,v,I,_-v),v=E,_=T):T>_&&(_=T)}l.fillRect(N,v,I,_-v)}this._settings.renderBorder&&this._settings.borderColor&&this._settings.overviewRulerLanes>0&&(l.beginPath(),l.lineWidth=1,l.strokeStyle=this._settings.borderColor,l.moveTo(0,0),l.lineTo(0,t),l.stroke(),l.moveTo(0,0),l.lineTo(e,0),l.stroke())},t}(n.ViewPart);t.DecorationsOverviewRuler=d}),define(t[502],n([1,0,26,36,16,35,296]),function(e,t,n,i,r,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=function(e){function t(t){var i=e.call(this,t)||this;return i.domNode=n.createFastDomNode(document.createElement("div")),i.domNode.setAttribute("role","presentation"),i.domNode.setAttribute("aria-hidden","true"),i.domNode.setClassName("view-rulers"),i._renderedRulers=[], +i._rulers=i._context.configuration.editor.viewInfo.rulers,i._typicalHalfwidthCharacterWidth=i._context.configuration.editor.fontInfo.typicalHalfwidthCharacterWidth,i}return o(t,e),t.prototype.dispose=function(){e.prototype.dispose.call(this)},t.prototype.onConfigurationChanged=function(e){return!!(e.viewInfo||e.layoutInfo||e.fontInfo)&&(this._rulers=this._context.configuration.editor.viewInfo.rulers,this._typicalHalfwidthCharacterWidth=this._context.configuration.editor.fontInfo.typicalHalfwidthCharacterWidth,!0)},t.prototype.onScrollChanged=function(e){return e.scrollHeightChanged},t.prototype.prepareRender=function(e){},t.prototype._ensureRulersCount=function(){var e=this._renderedRulers.length,t=this._rulers.length;if(e!==t)if(e0;){(s=n.createFastDomNode(document.createElement("div"))).setClassName("view-ruler"),s.setWidth(i),this.domNode.appendChild(s),this._renderedRulers.push(s),o--}else for(var r=e-t;r>0;){var s=this._renderedRulers.pop() +;this.domNode.removeChild(s),r--}},t.prototype.render=function(e){this._ensureRulersCount();for(var t=0,n=this._rulers.length;tt.length)for(var s=this._secondaryCursors.length-t.length,o=0;o1),this._hasNonEmptySelection.set(e.some(function(e){return!e.isEmpty()}))):(this._hasMultipleSelections.reset(),this._hasNonEmptySelection.reset())},t.prototype._updateFromFocus=function(){this._editorFocus.set(this._editor.hasWidgetFocus()&&!this._editor.isSimpleWidget),this._editorTextFocus.set(this._editor.hasTextFocus()&&!this._editor.isSimpleWidget),this._textInputFocus.set(this._editor.hasTextFocus())},t.prototype._updateFromModel=function(){var e=this._editor.getModel();this._canUndo.set(e&&e.canUndo()),this._canRedo.set(e&&e.canRedo())},t}(l.Disposable),B=function(e){function t(t,n){var i=e.call(this)||this;i._editor=t,i._langId=S.EditorContextKeys.languageId.bindTo(n),i._hasCompletionItemProvider=S.EditorContextKeys.hasCompletionItemProvider.bindTo(n),i._hasCodeActionsProvider=S.EditorContextKeys.hasCodeActionsProvider.bindTo(n),i._hasCodeLensProvider=S.EditorContextKeys.hasCodeLensProvider.bindTo(n), +i._hasDefinitionProvider=S.EditorContextKeys.hasDefinitionProvider.bindTo(n),i._hasImplementationProvider=S.EditorContextKeys.hasImplementationProvider.bindTo(n),i._hasTypeDefinitionProvider=S.EditorContextKeys.hasTypeDefinitionProvider.bindTo(n),i._hasHoverProvider=S.EditorContextKeys.hasHoverProvider.bindTo(n),i._hasDocumentHighlightProvider=S.EditorContextKeys.hasDocumentHighlightProvider.bindTo(n),i._hasDocumentSymbolProvider=S.EditorContextKeys.hasDocumentSymbolProvider.bindTo(n),i._hasReferenceProvider=S.EditorContextKeys.hasReferenceProvider.bindTo(n),i._hasRenameProvider=S.EditorContextKeys.hasRenameProvider.bindTo(n),i._hasDocumentFormattingProvider=S.EditorContextKeys.hasDocumentFormattingProvider.bindTo(n),i._hasDocumentSelectionFormattingProvider=S.EditorContextKeys.hasDocumentSelectionFormattingProvider.bindTo(n),i._hasSignatureHelpProvider=S.EditorContextKeys.hasSignatureHelpProvider.bindTo(n),i._isInWalkThrough=S.EditorContextKeys.isInEmbeddedEditor.bindTo(n);var o=function(){return i._update() +};return i._register(t.onDidChangeModel(o)),i._register(t.onDidChangeModelLanguage(o)),i._register(w.SuggestRegistry.onDidChange(o)),i._register(w.CodeActionProviderRegistry.onDidChange(o)),i._register(w.CodeLensProviderRegistry.onDidChange(o)),i._register(w.DefinitionProviderRegistry.onDidChange(o)),i._register(w.ImplementationProviderRegistry.onDidChange(o)),i._register(w.TypeDefinitionProviderRegistry.onDidChange(o)),i._register(w.HoverProviderRegistry.onDidChange(o)),i._register(w.DocumentHighlightProviderRegistry.onDidChange(o)),i._register(w.DocumentSymbolProviderRegistry.onDidChange(o)),i._register(w.ReferenceProviderRegistry.onDidChange(o)),i._register(w.RenameProviderRegistry.onDidChange(o)),i._register(w.DocumentFormattingEditProviderRegistry.onDidChange(o)),i._register(w.DocumentRangeFormattingEditProviderRegistry.onDidChange(o)),i._register(w.SignatureHelpProviderRegistry.onDidChange(o)),o(),i}return o(t,e),t.prototype.dispose=function(){e.prototype.dispose.call(this)}, +t.prototype.reset=function(){this._langId.reset(),this._hasCompletionItemProvider.reset(),this._hasCodeActionsProvider.reset(),this._hasCodeLensProvider.reset(),this._hasDefinitionProvider.reset(),this._hasImplementationProvider.reset(),this._hasTypeDefinitionProvider.reset(),this._hasHoverProvider.reset(),this._hasDocumentHighlightProvider.reset(),this._hasDocumentSymbolProvider.reset(),this._hasReferenceProvider.reset(),this._hasRenameProvider.reset(),this._hasDocumentFormattingProvider.reset(),this._hasDocumentSelectionFormattingProvider.reset(),this._hasSignatureHelpProvider.reset(),this._isInWalkThrough.reset()},t.prototype._update=function(){var e=this._editor.getModel();e?(this._langId.set(e.getLanguageIdentifier().language),this._hasCompletionItemProvider.set(w.SuggestRegistry.has(e)),this._hasCodeActionsProvider.set(w.CodeActionProviderRegistry.has(e)),this._hasCodeLensProvider.set(w.CodeLensProviderRegistry.has(e)),this._hasDefinitionProvider.set(w.DefinitionProviderRegistry.has(e)), +this._hasImplementationProvider.set(w.ImplementationProviderRegistry.has(e)),this._hasTypeDefinitionProvider.set(w.TypeDefinitionProviderRegistry.has(e)),this._hasHoverProvider.set(w.HoverProviderRegistry.has(e)),this._hasDocumentHighlightProvider.set(w.DocumentHighlightProviderRegistry.has(e)),this._hasDocumentSymbolProvider.set(w.DocumentSymbolProviderRegistry.has(e)),this._hasReferenceProvider.set(w.ReferenceProviderRegistry.has(e)),this._hasRenameProvider.set(w.RenameProviderRegistry.has(e)),this._hasSignatureHelpProvider.set(w.SignatureHelpProviderRegistry.has(e)),this._hasDocumentFormattingProvider.set(w.DocumentFormattingEditProviderRegistry.has(e)||w.DocumentRangeFormattingEditProviderRegistry.has(e)),this._hasDocumentSelectionFormattingProvider.set(w.DocumentRangeFormattingEditProviderRegistry.has(e)),this._isInWalkThrough.set(e.uri.scheme===E.Schemas.walkThroughSnippet)):this.reset()},t}(l.Disposable);t.EditorModeContext=B;var H=function(e){function t(t){var n=e.call(this)||this +;return n._onChange=n._register(new s.Emitter),n.onChange=n._onChange.event,n._hasFocus=!1,n._domFocusTracker=n._register(i.trackFocus(t)),n._register(n._domFocusTracker.onDidFocus(function(){n._hasFocus=!0,n._onChange.fire(void 0)})),n._register(n._domFocusTracker.onDidBlur(function(){n._hasFocus=!1,n._onChange.fire(void 0)})),n}return o(t,e),t.prototype.hasFocus=function(){return this._hasFocus},t}(l.Disposable),z=encodeURIComponent(""),U=encodeURIComponent('');M.registerThemingParticipant(function(e,t){var n=e.getColor(R.editorErrorBorder) +;n&&t.addRule(".monaco-editor .squiggly-error { border-bottom: 4px double "+n+"; }");var i=e.getColor(R.editorErrorForeground);i&&t.addRule('.monaco-editor .squiggly-error { background: url("data:image/svg+xml,'+O(i)+'") repeat-x bottom left; }');var o=e.getColor(R.editorWarningBorder);o&&t.addRule(".monaco-editor .squiggly-warning { border-bottom: 4px double "+o+"; }");var r=e.getColor(R.editorWarningForeground);r&&t.addRule('.monaco-editor .squiggly-warning { background: url("data:image/svg+xml,'+O(r)+'") repeat-x bottom left; }');var s=e.getColor(R.editorInfoBorder);s&&t.addRule(".monaco-editor .squiggly-info { border-bottom: 4px double "+s+"; }");var a=e.getColor(R.editorInfoForeground);a&&t.addRule('.monaco-editor .squiggly-info { background: url("data:image/svg+xml,'+O(a)+'") repeat-x bottom left; }');var l=e.getColor(R.editorHintBorder);l&&t.addRule(".monaco-editor .squiggly-hint { border-bottom: 2px dotted "+l+"; }");var u=e.getColor(R.editorHintForeground) +;u&&t.addRule('.monaco-editor .squiggly-hint { background: url("data:image/svg+xml,'+function(e){return U+encodeURIComponent(e.toString())+j}(u)+'") no-repeat bottom left; }');var d=e.getColor(R.editorUnnecessaryCodeOpacity);d&&t.addRule("."+A+" .monaco-editor .squiggly-inline-unnecessary { opacity: "+d.rgba.a+"; will-change: opacity; }");var c=e.getColor(R.editorUnnecessaryCodeBorder);c&&t.addRule("."+A+" .monaco-editor .squiggly-unnecessary { border-bottom: 2px dashed "+c+"; }")})}),define(t[506],n([1,0,293,2,7,26,96,99,65,12,16,22,55,35,69,67,11,19,32,63,362]),function(e,t,n,i,r,s,a,l,u,d,c,h,p,f,g,m,v,_,y,C){"use strict";function b(e){for(var t=e.get(y.ICodeEditorService).listDiffEditors(),n=0,i=t.length;n0){var _=e[r-1];m=0===_.originalEndLineNumber?_.originalStartLineNumber+1:_.originalEndLineNumber+1,v=0===_.modifiedEndLineNumber?_.modifiedStartLineNumber+1:_.modifiedEndLineNumber+1}var y=f-3+1,C=g-3+1;if(yL){I+=D=L-I,M+=D}if(M>x){var D=x-M;I+=D,M+=D}h[p++]=new S(b,I,E,M),i[o++]=new w(h)} +for(var T=i[0].entries,k=[],R=0,r=1,s=i.length;rg)&&(g=b),0!==S&&(0===m||Sv)&&(v=w)}var E=document.createElement("div");E.className="diff-review-row";var L=document.createElement("div");L.className="diff-review-cell diff-review-summary";var x=g-f+1,N=v-m+1;L.appendChild(document.createTextNode(c+1+"/"+this._diffs.length+": @@ -"+f+","+x+" +"+m+","+N+" @@")),E.setAttribute("data-line",String(m));var I=function(e){return 0===e?n.localize(1,null):1===e?n.localize(2,null):n.localize(3,null,e)},M=I(x),D=I(N);E.setAttribute("aria-label",n.localize(4,null,c+1,this._diffs.length,f,M,m,D)),E.appendChild(L), +E.setAttribute("role","listitem"),p.appendChild(E);for(var T=m,_=0,y=h.length;_0}function A(e){ +return e.originalEndLineNumber>0}Object.defineProperty(t,"__esModule",{value:!0});var F=function(){function e(){this._zones=[],this._zonesMap={},this._decorations=[]}return e.prototype.getForeignViewZones=function(e){var t=this;return e.filter(function(e){return!t._zonesMap[String(e.id)]})},e.prototype.clean=function(e){var t=this;this._zones.length>0&&e.changeViewZones(function(e){for(var n=0,i=t._zones.length;n0?o/n:0;return{height:Math.max(0,Math.floor(e.contentHeight*r)),top:Math.floor(t*r)}},t.prototype._createDataSource=function(){var e=this;return{getWidth:function(){return e._width},getHeight:function(){return e._height-e._reviewHeight},getContainerDomNode:function(){return e._containerDomElement},relayoutEditors:function(){e._doLayout()},getOriginalEditor:function(){return e.originalEditor},getModifiedEditor:function(){return e.modifiedEditor}}},t.prototype._setStrategy=function(e){this._strategy&&this._strategy.dispose(),this._strategy=e,e.applyColors(this._themeService.getTheme()),this._lineChanges&&this._updateDecorations(),this._measureDomElement(!0)},t.prototype._getLineChangeAtOrBeforeLineNumber=function(e,t){ +if(0===this._lineChanges.length||e=s?n=o+1:(n=o,i=o)}return this._lineChanges[n]},t.prototype._getEquivalentLineForOriginalLineNumber=function(e){var t=this._getLineChangeAtOrBeforeLineNumber(e,function(e){return e.originalStartLineNumber});if(!t)return e;var n=t.originalStartLineNumber+(t.originalEndLineNumber>0?-1:0),i=t.modifiedStartLineNumber+(t.modifiedEndLineNumber>0?-1:0),o=t.originalEndLineNumber>0?t.originalEndLineNumber-t.originalStartLineNumber+1:0,r=t.modifiedEndLineNumber>0?t.modifiedEndLineNumber-t.modifiedStartLineNumber+1:0,s=e-n;return s<=o?i+Math.min(s,r):i+r-o+s},t.prototype._getEquivalentLineForModifiedLineNumber=function(e){var t=this._getLineChangeAtOrBeforeLineNumber(e,function(e){return e.modifiedStartLineNumber});if(!t)return e +;var n=t.originalStartLineNumber+(t.originalEndLineNumber>0?-1:0),i=t.modifiedStartLineNumber+(t.modifiedEndLineNumber>0?-1:0),o=t.originalEndLineNumber>0?t.originalEndLineNumber-t.originalStartLineNumber+1:0,r=t.modifiedEndLineNumber>0?t.modifiedEndLineNumber-t.modifiedStartLineNumber+1:0,s=e-i;return s<=r?n+Math.min(s,o):n+o-r+s},t.prototype.getDiffLineInformationForOriginal=function(e){return this._lineChanges?{equivalentLineNumber:this._getEquivalentLineForOriginalLineNumber(e)}:null},t.prototype.getDiffLineInformationForModified=function(e){return this._lineChanges?{equivalentLineNumber:this._getEquivalentLineForModifiedLineNumber(e)}:null},t.ONE_OVERVIEW_WIDTH=15,t.ENTIRE_DIFF_OVERVIEW_WIDTH=30,t.UPDATE_DIFF_DECORATIONS_DELAY=200,t=a([u(2,v.IEditorWorkerService),u(3,p.IContextKeyService),u(4,h.IInstantiationService),u(5,f.ICodeEditorService),u(6,x.IThemeService),u(7,k.INotificationService)],t)}(r.Disposable);t.DiffEditorWidget=V;var B=function(e){function t(t){var n=e.call(this)||this +;return n._dataSource=t,n}return o(t,e),t.prototype.applyColors=function(e){var t=(e.getColor(N.diffInserted)||N.defaultInsertColor).transparent(2),n=(e.getColor(N.diffRemoved)||N.defaultRemoveColor).transparent(2),i=!t.equals(this._insertColor)||!n.equals(this._removeColor);return this._insertColor=t,this._removeColor=n,i},t.prototype.getEditorsDiffDecorations=function(e,t,n,i,o,r,s){o=o.sort(function(e,t){return e.afterLineNumber-t.afterLineNumber}),i=i.sort(function(e,t){return e.afterLineNumber-t.afterLineNumber});var a=this._getViewZones(e,i,o,r,s,n),l=this._getOriginalEditorDecorations(e,t,n,r,s),u=this._getModifiedEditorDecorations(e,t,n,r,s);return{original:{decorations:l.decorations,overviewZones:l.overviewZones,zones:a.original},modified:{decorations:u.decorations,overviewZones:u.overviewZones,zones:a.modified}}},t}(r.Disposable),H=function(){function e(e){this._source=e,this._index=-1,this.advance()}return e.prototype.advance=function(){this._index++, +this._index0){var n=e[e.length-1];if(n.afterLineNumber===t.afterLineNumber&&null===n.domNode)return void(n.heightInLines+=t.heightInLines)}e.push(t)},u=new H(this.modifiedForeignVZ),d=new H(this.originalForeignVZ),c=0,h=this.lineChanges.length;c<=h;c++){var p=c0?-1:0),o=p.modifiedStartLineNumber+(p.modifiedEndLineNumber>0?-1:0),n=p.originalEndLineNumber>0?p.originalEndLineNumber-p.originalStartLineNumber+1:0,t=p.modifiedEndLineNumber>0?p.modifiedEndLineNumber-p.modifiedStartLineNumber+1:0, +r=Math.max(p.originalStartLineNumber,p.originalEndLineNumber),s=Math.max(p.modifiedStartLineNumber,p.modifiedEndLineNumber)):(r=i+=1e7+n,s=o+=1e7+t);for(var f=[],g=[];u.current&&u.current.afterLineNumber<=s;){m=void 0;m=u.current.afterLineNumber<=o?i-o+u.current.afterLineNumber:r,f.push({afterLineNumber:m,heightInLines:u.current.heightInLines,domNode:null}),u.advance()}for(;d.current&&d.current.afterLineNumber<=r;){var m=void 0;m=d.current.afterLineNumber<=i?o-i+d.current.afterLineNumber:s,g.push({afterLineNumber:m,heightInLines:d.current.heightInLines,domNode:null}),d.advance()}if(null!==p&&P(p)){(v=this._produceOriginalFromDiff(p,n,t))&&f.push(v)}if(null!==p&&A(p)){var v=this._produceModifiedFromDiff(p,n,t);v&&g.push(v)}var _=0,y=0;for(f=f.sort(a),g=g.sort(a);_=b.heightInLines?(C.heightInLines-=b.heightInLines,y++):(b.heightInLines-=C.heightInLines,_++)}for(;_2*t.MINIMUM_EDITOR_WIDTH?(in-t.MINIMUM_EDITOR_WIDTH&&(i=n-t.MINIMUM_EDITOR_WIDTH)):i=o,this._sashPosition!==i&&(this._sashPosition=i,this._sash.layout()),this._sashPosition},t.prototype.onSashDragStart=function(){this._startSashPosition=this._sashPosition},t.prototype.onSashDrag=function(e){var t=this._dataSource.getWidth()-V.ENTIRE_DIFF_OVERVIEW_WIDTH,n=this.layout((this._startSashPosition+(e.currentX-e.startX))/t);this._sashRatio=n/t,this._dataSource.relayoutEditors()},t.prototype.onSashDragEnd=function(){this._sash.layout()},t.prototype.onSashReset=function(){this._sashRatio=.5,this._dataSource.relayoutEditors(),this._sash.layout()},t.prototype.getVerticalSashTop=function(e){ +return 0},t.prototype.getVerticalSashLeft=function(e){return this._sashPosition},t.prototype.getVerticalSashHeight=function(e){return this._dataSource.getHeight()},t.prototype._getViewZones=function(e,t,n,i,o){return new j(e,t,n).getViewZones()},t.prototype._getOriginalEditorDecorations=function(e,t,n,i,o){for(var r=this._removeColor.toString(),s={decorations:[],overviewZones:[]},a=i.getModel(),l=0,u=e.length;lt?{afterLineNumber:Math.max(e.originalStartLineNumber,e.originalEndLineNumber),heightInLines:n-t,domNode:null}:null},t.prototype._produceModifiedFromDiff=function(e,t,n){return t>n?{afterLineNumber:Math.max(e.modifiedStartLineNumber,e.modifiedEndLineNumber),heightInLines:t-n,domNode:null}:null},t}(z),q=function(e){function t(t,n){var i=e.call(this,t)||this +;return i.decorationsLeft=t.getOriginalEditor().getLayoutInfo().decorationsLeft,i._register(t.getOriginalEditor().onDidLayoutChange(function(e){i.decorationsLeft!==e.decorationsLeft&&(i.decorationsLeft=e.decorationsLeft,t.relayoutEditors())})),i}return o(t,e),t.prototype.setEnableSplitViewResizing=function(e){},t.prototype._getViewZones=function(e,t,n,i,o,r){return new G(e,t,n,i,o,r).getViewZones()},t.prototype._getOriginalEditorDecorations=function(e,t,n,i,o){for(var r=this._removeColor.toString(),s={decorations:[],overviewZones:[]},a=0,l=e.length;a
    '])}h+=this.modifiedEditorConfiguration.viewInfo.scrollBeyondLastColumn;var m=document.createElement("div");m.className="view-lines line-delete",m.innerHTML=a.build(),b.Configuration.applyFontInfoSlow(m,this.modifiedEditorConfiguration.fontInfo);var v=document.createElement("div");return v.className="inline-deleted-margin-view-zone",v.innerHTML=l.join(""), +b.Configuration.applyFontInfoSlow(v,this.modifiedEditorConfiguration.fontInfo),{shouldNotShrink:!0,afterLineNumber:0===e.modifiedEndLineNumber?e.modifiedStartLineNumber:e.modifiedStartLineNumber-1,heightInLines:t,minWidthInPx:h*c,domNode:m,marginDomNode:v}},t.prototype._renderOriginalLine=function(e,t,n,i,o,r,s){var a=t.getLineTokens(o),l=a.getLineContent(),u=_.LineDecoration.filter(r,o,1,l.length+1);s.appendASCIIString('
    ') +;var d=S.ViewLineRenderingData.isBasicASCII(l,t.mightContainNonBasicASCII()),c=S.ViewLineRenderingData.containsRTL(l,d,t.mightContainRTL()),h=y.renderViewLine(new y.RenderLineInput(n.fontInfo.isMonospace&&!n.viewInfo.disableMonospaceOptimizations,l,!1,d,c,0,a,u,i,n.fontInfo.spaceWidth,n.viewInfo.stopRenderingLineAfter,n.viewInfo.renderWhitespace,n.viewInfo.renderControlCharacters,n.viewInfo.fontLigatures),s);s.appendASCIIString("
    ");var p=h.characterMapping.getAbsoluteOffsets();return p.length>0?p[p.length-1]:0},t}(z);x.registerThemingParticipant(function(e,t){var n=e.getColor(N.diffInserted);n&&(t.addRule(".monaco-editor .line-insert, .monaco-editor .char-insert { background-color: "+n+"; }"),t.addRule(".monaco-diff-editor .line-insert, .monaco-diff-editor .char-insert { background-color: "+n+"; }"),t.addRule(".monaco-editor .inline-added-margin-view-zone { background-color: "+n+"; }"));var i=e.getColor(N.diffRemoved) +;i&&(t.addRule(".monaco-editor .line-delete, .monaco-editor .char-delete { background-color: "+i+"; }"),t.addRule(".monaco-diff-editor .line-delete, .monaco-diff-editor .char-delete { background-color: "+i+"; }"),t.addRule(".monaco-editor .inline-deleted-margin-view-zone { background-color: "+i+"; }"));var o=e.getColor(N.diffInsertedOutline);o&&t.addRule(".monaco-editor .line-insert, .monaco-editor .char-insert { border: 1px "+("hc"===e.type?"dashed":"solid")+" "+o+"; }");var r=e.getColor(N.diffRemovedOutline);r&&t.addRule(".monaco-editor .line-delete, .monaco-editor .char-delete { border: 1px "+("hc"===e.type?"dashed":"solid")+" "+r+"; }");var s=e.getColor(N.scrollbarShadow);s&&t.addRule(".monaco-diff-editor.side-by-side .editor.modified { box-shadow: -6px 0 5px -5px "+s+"; }");var a=e.getColor(N.diffBorder);a&&t.addRule(".monaco-diff-editor.side-by-side .editor.modified { border-left: 1px solid "+a+"; }")})}),define(t[141],n([1,0,28,15,34,19,32,104,16,37]),function(e,t,n,i,r,s,l,d,c,h){"use strict" +;Object.defineProperty(t,"__esModule",{value:!0});var p=function(e){function t(t,n,i,o,r,s,a,l,u){var d=e.call(this,t,i.getRawConfiguration(),{},o,r,s,a,l,u)||this;return d._parentEditor=i,d._overwriteOptions=n,e.prototype.updateOptions.call(d,d._overwriteOptions),d._register(i.onDidChangeConfiguration(function(e){return d._onParentConfigurationChanged(e)})),d}return o(t,e),t.prototype.getParentEditor=function(){return this._parentEditor},t.prototype._onParentConfigurationChanged=function(t){e.prototype.updateOptions.call(this,this._parentEditor.getRawConfiguration()),e.prototype.updateOptions.call(this,this._overwriteOptions)},t.prototype.updateOptions=function(t){n.mixin(this._overwriteOptions,t,!0),e.prototype.updateOptions.call(this,this._overwriteOptions)},t=a([u(3,i.IInstantiationService),u(4,l.ICodeEditorService),u(5,r.ICommandService),u(6,s.IContextKeyService),u(7,c.IThemeService),u(8,h.INotificationService)],t)}(d.CodeEditorWidget);t.EmbeddedCodeEditorWidget=p}), +define(t[509],n([1,0,301,61,9,79,2,13,75,3,29,18,51,47,124,16,35,24,25,50]),function(e,t,n,i,o,r,s,l,d,c,h,p,f,g,m,v,_,y,C,b){"use strict";function S(e){return e.toString()}Object.defineProperty(t,"__esModule",{value:!0});var w=function(){function e(e,t,n){this.model=e,this._markerDecorations=[],this._modelEventListeners=[],this._modelEventListeners.push(e.onWillDispose(function(){return t(e)})),this._modelEventListeners.push(e.onDidChangeLanguage(function(t){return n(e,t)}))}return e.prototype.dispose=function(){this._markerDecorations=this.model.deltaDecorations(this._markerDecorations,[]),this._modelEventListeners=s.dispose(this._modelEventListeners),this.model=null},e.prototype.acceptMarkerDecorations=function(e){this._markerDecorations=this.model.deltaDecorations(this._markerDecorations,e)},e}(),E=function(){function e(){}return e.setMarkers=function(e,t){var n=this,i=t.read({resource:e.model.uri,take:500}).map(function(t){return{range:n._createDecorationRange(e.model,t), +options:n._createDecorationOption(t)}});e.acceptMarkerDecorations(i)},e._createDecorationRange=function(e,t){var n=c.Range.lift(t);if(t.severity===d.MarkerSeverity.Hint&&c.Range.spansMultipleLines(n)&&(n=n.setEndPosition(n.startLineNumber,n.startColumn)),(n=e.validateRange(n)).isEmpty()){var i=e.getWordAtPosition(n.getStartPosition());if(i)n=new c.Range(n.startLineNumber,i.startColumn,n.endLineNumber,i.endColumn);else{var o=e.getLineLastNonWhitespaceColumn(n.startLineNumber)||e.getLineMaxColumn(n.startLineNumber);1===o||(n=n.endColumn>=o?new c.Range(n.startLineNumber,o-1,n.endLineNumber,o):new c.Range(n.startLineNumber,n.startColumn,n.endLineNumber,n.endColumn+1))}}else if(t.endColumn===Number.MAX_VALUE&&1===t.startColumn&&n.startLineNumber===n.endLineNumber){var r=e.getLineFirstNonWhitespaceColumn(t.startLineNumber);r=0?"squiggly-unnecessary":"squiggly-hint",s=0;break;case d.MarkerSeverity.Warning:t="squiggly-warning",i=v.themeColorFromId(_.overviewRulerWarning),o=v.themeColorFromId(_.overviewRulerWarning),s=20;break;case d.MarkerSeverity.Info:t="squiggly-info",i=v.themeColorFromId(_.overviewRulerInfo),o=v.themeColorFromId(_.overviewRulerInfo),s=10;break;case d.MarkerSeverity.Error:default:t="squiggly-error",i=v.themeColorFromId(_.overviewRulerError),o=v.themeColorFromId(_.overviewRulerError),s=30}e.tags&&-1!==e.tags.indexOf(d.MarkerTag.Unnecessary)&&(a="squiggly-inline-unnecessary");var l=null,u=e.message,c=e.source,h=e.relatedInformation;if("string"==typeof u&&(u=u.trim(),c&&(u=/\n/g.test(u)?n.localize(0,null,c,u):n.localize(1,null,c,u)),l=(new r.MarkdownString).appendCodeblock("_",u),!C.isFalsyOrEmpty(h))){l.appendMarkdown("\n");for(var p=0,f=h;p0&&(n._decorations=n._editor.deltaDecorations(n._decorations,[])),n._updateBracketsSoon.schedule()})),n}return o(t,e),t.get=function(e){return e.getContribution(t.ID)},t.prototype.getId=function(){return t.ID},t.prototype.jumpToBracket=function(){var e=this._editor.getModel();if(e){var t=this._editor.getSelections().map(function(t){var n=t.getStartPosition(),i=e.matchBracket(n),o=null;if(i)i[0].containsPosition(n)?o=i[1].getStartPosition():i[1].containsPosition(n)&&(o=i[0].getStartPosition());else{var r=e.findNextBracket(n);r&&r.range&&(o=r.range.getStartPosition())}return o?new s.Selection(o.lineNumber,o.column,o.lineNumber,o.column):new s.Selection(n.lineNumber,n.column,n.lineNumber,n.column)});this._editor.setSelections(t),this._editor.revealRange(t[0])}},t.prototype.selectToBracket=function(){ +var e=this._editor.getModel();if(e){var t=[];this._editor.getSelections().forEach(function(n){var i=n.getStartPosition(),o=e.matchBracket(i),r=null,a=null;if(!o){var l=e.findNextBracket(i);l&&l.range&&(o=e.matchBracket(l.range.getStartPosition()))}o&&(o[0].startLineNumber===o[1].startLineNumber?(r=o[1].startColumn0&&(this._editor.setSelections(t),this._editor.revealRange(t[0]))}},t.prototype._updateBrackets=function(){if(this._matchBrackets){this._recomputeBrackets();for(var e=[],n=0,i=0,o=this._lastBracketsData.length;i1&&o.sort(r.Position.compare);for(var d=[],c=0,h=0,p=n.length,a=0,l=o.length;a{1}",n,r),this._commands[n]=o):s=i.format("{0}",r),t.push(s)}this._domNode.innerHTML=t.join(" | "),this._editor.layoutContentWidget(this)}else this._domNode.innerHTML="no commands"},e.prototype.getId=function(){return this._id},e.prototype.getDomNode=function(){return this._domNode},e.prototype.setSymbolRange=function(e){var t=e.startLineNumber,n=this._editor.getModel().getLineFirstNonWhitespaceColumn(t);this._widgetPosition={position:{lineNumber:t,column:n},preference:[s.ContentWidgetPositionPreference.ABOVE] +}},e.prototype.getPosition=function(){return this._widgetPosition},e.prototype.isVisible=function(){return this._domNode.hasAttribute("monaco-visible-content-widget")},e._idPool=0,e}(),p=function(){function e(){this._removeDecorations=[],this._addDecorations=[],this._addDecorationsCallbacks=[]}return e.prototype.addDecoration=function(e,t){this._addDecorations.push(e),this._addDecorationsCallbacks.push(t)},e.prototype.removeDecoration=function(e){this._removeDecorations.push(e)},e.prototype.commit=function(e){for(var t=e.deltaDecorations(this._removeDecorations,this._addDecorations),n=0,i=t.length;n a:hover { color: "+i+" !important; }")})}),define(t[512],n([1,0,14,10,2,68,11,17,511,34,37,452]),function(e,t,n,i,o,r,s,l,d,c,h,p){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var f=function(){function e(e,t,n){var i=this;this._editor=e,this._commandService=t,this._notificationService=n,this._isEnabled=this._editor.getConfiguration().contribInfo.codeLens,this._globalToDispose=[],this._localToDispose=[],this._lenses=[],this._currentFindCodeLensSymbolsPromise=null,this._modelChangeCounter=0,this._globalToDispose.push(this._editor.onDidChangeModel(function(){return i._onModelChange()})),this._globalToDispose.push(this._editor.onDidChangeModelLanguage(function(){return i._onModelChange()})),this._globalToDispose.push(this._editor.onDidChangeConfiguration(function(e){var t=i._isEnabled;i._isEnabled=i._editor.getConfiguration().contribInfo.codeLens,t!==i._isEnabled&&i._onModelChange()})), +this._globalToDispose.push(l.CodeLensProviderRegistry.onDidChange(this._onModelChange,this)),this._onModelChange()}return e.prototype.dispose=function(){this._localDispose(),this._globalToDispose=o.dispose(this._globalToDispose)},e.prototype._localDispose=function(){this._currentFindCodeLensSymbolsPromise&&(this._currentFindCodeLensSymbolsPromise.cancel(),this._currentFindCodeLensSymbolsPromise=null,this._modelChangeCounter++),this._currentResolveCodeLensSymbolsPromise&&(this._currentResolveCodeLensSymbolsPromise.cancel(),this._currentResolveCodeLensSymbolsPromise=null),this._localToDispose=o.dispose(this._localToDispose)},e.prototype.getId=function(){return e.ID},e.prototype._onModelChange=function(){var e=this;this._localDispose();var t=this._editor.getModel();if(t&&this._isEnabled&&l.CodeLensProviderRegistry.has(t)){for(var s=0,a=l.CodeLensProviderRegistry.all(t);s0&&e._detectVisibleLenses.schedule()})),this._localToDispose.push(this._editor.onDidLayoutChange(function(t){e._detectVisibleLenses.schedule()})),this._localToDispose.push(o.toDisposable(function(){if(e._editor.getModel()){var t=r.StableEditorScrollState.capture(e._editor);e._editor.changeDecorations(function(t){e._editor.changeViewZones(function(n){e._disposeAllLenses(t,n)})}),t.restore(e._editor)}else e._disposeAllLenses(null,null)})),h.schedule()}},e.prototype._disposeAllLenses=function(e,t){var n=new d.CodeLensHelper;this._lenses.forEach(function(e){return e.dispose(n,t)}),e&&n.commit(e),this._lenses=[]},e.prototype._renderCodeLensSymbols=function(e){var t=this;if(this._editor.getModel()){for(var n,i=this._editor.getModel().getLineCount(),o=[],s=0,a=e;si||(n&&n[n.length-1].symbol.range.startLineNumber===u?n.push(l):(n=[l],o.push(n)))}var c=r.StableEditorScrollState.capture(this._editor);this._editor.changeDecorations(function(e){t._editor.changeViewZones(function(n){for(var i=0,r=0,s=new d.CodeLensHelper;r=0?t+1:1},e.prototype.getCurrentMatchesPosition=function(t){for(var n=this._editor.getModel().getDecorationsInRange(t),i=0,o=n.length;i1e3){s=e._FIND_MATCH_NO_OVERVIEW_DECORATION +;for(var l=o._editor.getModel().getLineCount(),u=o._editor.getLayoutInfo().height/l,d=Math.max(2,Math.ceil(3/u)),c=t[0].range.startLineNumber,h=t[0].range.endLineNumber,p=1,f=t.length;p=g.startLineNumber?g.endLineNumber>h&&(h=g.endLineNumber):(a.push({range:new n.Range(c,1,h,1),options:e._FIND_MATCH_ONLY_OVERVIEW_DECORATION}),c=g.startLineNumber,h=g.endLineNumber)}a.push({range:new n.Range(c,1,h,1),options:e._FIND_MATCH_ONLY_OVERVIEW_DECORATION})}for(var m=new Array(t.length),p=0,f=t.length;p=0;t--){var n=this._decorations[t],i=this._editor.getModel().getDecorationRange(n);if(i&&!(i.endLineNumber>e.lineNumber)){if(i.endLineNumbere.column))return i}}return this._editor.getModel().getDecorationRange(this._decorations[this._decorations.length-1])},e.prototype.matchAfterPosition=function(e){if(0===this._decorations.length)return null;for(var t=0,n=this._decorations.length;te.lineNumber)return o;if(!(o.startColumn0},e.prototype._cannotFind=function(){if(!this._hasMatches()){var e=this._decorations.getFindScope();return e&&this._editor.revealRangeInCenterIfOutsideViewport(e,0),!0}return!1},e.prototype._setCurrentFindMatch=function(e){var t=this._decorations.setCurrentFindMatch(e);this._state.changeMatchInfo(t,this._decorations.getCount(),e),this._editor.setSelection(e),this._editor.revealRangeInCenterIfOutsideViewport(e,0)}, +e.prototype._prevSearchPosition=function(e){var t=this._state.isRegex&&(this._state.searchString.indexOf("^")>=0||this._state.searchString.indexOf("$")>=0),n=e.lineNumber,i=e.column,o=this._editor.getModel();return t||1===i?(1===n?n=o.getLineCount():n--,i=o.getLineMaxColumn(n)):i--,new s.Position(n,i)},e.prototype._moveToPrevMatch=function(n,i){if(void 0===i&&(i=!1),this._decorations.getCount()=0||this._state.searchString.indexOf("$")>=0),n=e.lineNumber,i=e.column,o=this._editor.getModel() +;return t||i===o.getLineMaxColumn(n)?(n===o.getLineCount()?n=1:n++,i=1):i++,new s.Position(n,i)},e.prototype._moveToNextMatch=function(e){if(this._decorations.getCount()=t.MATCHES_LIMIT?this._largeReplaceAll():this._regularReplaceAll(e),this.research(!1)}},e.prototype._largeReplaceAll=function(){var e=new c.SearchParams(this._state.searchString,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getConfiguration().wordSeparators:null).parseSearchRequest();if(e){var t=e.regex;if(!t.multiline){var n="m";t.ignoreCase&&(n+="i"), +t.global&&(n+="g"),t=new RegExp(t.source,n)}var i,o=this._editor.getModel(),s=o.getValue(f.EndOfLinePreference.LF),a=o.getFullModelRange(),l=this._getReplacePattern();i=l.hasReplacementPatterns?s.replace(t,function(){return l.buildReplaceString(arguments)}):s.replace(t,l.buildReplaceString(null));var u=new r.ReplaceCommandThatPreservesSelection(a,i,this._editor.getSelection());this._executeEditorCommand("replaceAll",u)}},e.prototype._regularReplaceAll=function(e){for(var t=this._getReplacePattern(),n=this._findMatches(e,t.hasReplacementPatterns,1073741824),i=[],o=0,r=n.length;o=0?this._markers[this._nextIdx]:void 0;this._markers=e||[],this._markers.sort(b.compareMarker),this._nextIdx=t?Math.max(-1,m.binarySearch(this._markers,t,b.compareMarker)):-1,this._onMarkerSetChanged.fire(this)}, +e.prototype.withoutWatchingEditorPosition=function(e){this._ignoreSelectionChange=!0;try{e()}finally{this._ignoreSelectionChange=!1}},e.prototype._initIdx=function(e){for(var t=!1,n=this._editor.getPosition(),i=0;i0?this._nextIdx=(this._nextIdx-1+this._markers.length)%this._markers.length:i=!0),n!==this._nextIdx){var o=this._markers[this._nextIdx];this._onCurrentMarkerChanged.fire(o)}return i},e.prototype.canNavigate=function(){return this._markers.length>0},e.prototype.findMarkerAtPosition=function(e){for(var t=0,n=this._markers;tthis._editor.getModel().getLineCount())return[];var n=g.ColorDetector.get(this._editor),i=this._editor.getModel().getLineMaxColumn(t),o=!1;return this._editor.getLineDecorations(t).map(function(s){ +var a=s.range.startLineNumber===t?s.range.startColumn:1,l=s.range.endLineNumber===t?s.range.endColumn:i;if(a>e._range.startColumn||e._range.endColumn>l)return null;var u=new r.Range(e._range.startLineNumber,a,e._range.startLineNumber,l),d=n.getColorData(s.range.getStartPosition());if(!o&&d){o=!0;var h=d.colorInfo,p=h.color,f=h.range;return new b(f,p,d.provider)}if(c.isEmptyMarkdownString(s.options.hoverMessage))return null;var g=void 0;return s.options.hoverMessage&&(g=Array.isArray(s.options.hoverMessage)?s.options.hoverMessage.slice():[s.options.hoverMessage]),{contents:g,range:u}}).filter(function(e){return!!e})},e.prototype.onResult=function(e,t){this._result=t?e.concat(this._result.sort(function(e,t){return e instanceof b?-1:t instanceof b?1:0})):this._result.concat(e)},e.prototype.getResult=function(){return this._result.slice(0)},e.prototype.getResultWithLoadingMessage=function(){return this._result.slice(0).concat([this._getLoadingMessage()])},e.prototype._getLoadingMessage=function(){return{ +range:this._range,contents:[(new c.MarkdownString).appendText(n.localize(0,null))]}},e}(),w=function(e){function t(n,o,r){var s=e.call(this,t.ID,n)||this;return s._themeService=r,s.renderDisposable=v.Disposable.None,s._computer=new S(s._editor),s._highlightDecorations=[],s._isChangingDecorations=!1,s._markdownRenderer=o,s._register(o.onDidRenderCodeBlock(s.onContentsChange,s)),s._hoverOperation=new u.HoverOperation(s._computer,function(e){return s._withResult(e,!0)},null,function(e){return s._withResult(e,!1)}),s._register(i.addStandardDisposableListener(s.getDomNode(),i.EventType.FOCUS,function(){s._colorPicker&&i.addClass(s.getDomNode(),"colorpicker-hover")})),s._register(i.addStandardDisposableListener(s.getDomNode(),i.EventType.BLUR,function(){i.removeClass(s.getDomNode(),"colorpicker-hover")})),s._register(n.onDidChangeConfiguration(function(e){s._hoverOperation.setHoverTime(s._editor.getConfiguration().contribInfo.hover.delay)})),s}return o(t,e),t.prototype.dispose=function(){ +this.renderDisposable.dispose(),this.renderDisposable=v.Disposable.None,this._hoverOperation.cancel(),e.prototype.dispose.call(this)},t.prototype.onModelDecorationsChanged=function(){this._isChangingDecorations||this.isVisible&&(this._hoverOperation.cancel(),this._computer.clearResult(),this._colorPicker||this._hoverOperation.start(0))},t.prototype.startShowingAt=function(e,t,n){if(!this._lastRange||!this._lastRange.equalsRange(e)){if(this._hoverOperation.cancel(),this.isVisible)if(this._showAtPosition.lineNumber!==e.startLineNumber)this.hide();else{for(var i=[],o=0,r=this._messages.length;o=e.endColumn&&i.push(s)}if(i.length>0){if(function(e,t){if(!e&&t||e&&!t||e.length!==t.length)return!1;for(var n=0;n0?this._renderMessages(this._lastRange,this._messages):t&&this.hide()},t.prototype._renderMessages=function(e,n){var i=this;this.renderDisposable.dispose(),this._colorPicker=null;var o,a=Number.MAX_VALUE,l=n[0].range,u=document.createDocumentFragment(),d=!0,h=!1;n.forEach(function(t){if(t.range)if(a=Math.min(a,t.range.startColumn),l=r.Range.plusRange(l,t.range),t instanceof b){h=!0 +;var n=t.color,g=n.red,S=n.green,w=n.blue,E=n.alpha,L=new m.RGBA(255*g,255*S,255*w,E),x=new m.Color(L),N=i._editor.getModel(),I=new r.Range(t.range.startLineNumber,t.range.startColumn,t.range.endLineNumber,t.range.endColumn),M={range:t.range,color:t.color},D=new p.ColorPickerModel(x,[],0),T=new f.ColorPickerWidget(u,D,i._editor.getConfiguration().pixelRatio,i._themeService);_.getColorPresentations(N,M,t.provider,y.CancellationToken.None).then(function(n){D.colorPresentations=n;var l=i._editor.getModel().getValueInRange(t.range);D.guessColorPresentation(x,l);var d=function(){var e,t;D.presentation.textEdit?(e=[D.presentation.textEdit],t=(t=new r.Range(D.presentation.textEdit.range.startLineNumber,D.presentation.textEdit.range.startColumn,D.presentation.textEdit.range.endLineNumber,D.presentation.textEdit.range.endColumn)).setEndPosition(t.endLineNumber,t.startColumn+D.presentation.textEdit.text.length)):(e=[{identifier:null,range:I,text:D.presentation.label,forceMoveMarkers:!1}], +t=I.setEndPosition(I.endLineNumber,I.startColumn+D.presentation.label.length)),i._editor.executeEdits("colorpicker",e),D.presentation.additionalTextEdits&&(e=D.presentation.additionalTextEdits.slice(),i._editor.executeEdits("colorpicker",e),i.hide()),i._editor.pushUndoStop(),I=t},c=function(e){return _.getColorPresentations(N,{range:I,color:{red:e.rgba.r/255,green:e.rgba.g/255,blue:e.rgba.b/255,alpha:e.rgba.a}},t.provider,y.CancellationToken.None).then(function(e){D.colorPresentations=e})},h=D.onColorFlushed(function(e){c(e).then(d)}),p=D.onDidChangeColor(c);i._colorPicker=T,i.showAt(new s.Position(e.startLineNumber,a),i._shouldFocus),i.updateContents(u),i._colorPicker.layout(),i.renderDisposable=v.combinedDisposable([h,p,T,o])})}else t.contents.filter(function(e){return!c.isEmptyMarkdownString(e)}).forEach(function(e){var t=i._markdownRenderer.render(e);o=t,u.appendChild(C("div.hover-row",null,t.element)),d=!1})}),h||d||(this.showAt(new s.Position(e.startLineNumber,a),this._shouldFocus), +this.updateContents(u)),this._isChangingDecorations=!0,this._highlightDecorations=this._editor.deltaDecorations(this._highlightDecorations,[{range:l,options:t._DECORATION_OPTIONS}]),this._isChangingDecorations=!1},t.ID="editor.contrib.modesContentHoverWidget",t._DECORATION_OPTIONS=h.ModelDecorationOptions.register({className:"hoverHighlight"}),t}(d.ContentHoverWidget);t.ModesContentHoverWidget=w}),define(t[520],n([1,0,320,39,18,62,64,3,11,23,519,255,2,16,22,20,121,378]),function(e,t,n,i,r,s,l,d,c,h,p,f,g,m,v,_,y){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var C=function(){function e(e,t,n,i){var o=this;this._editor=e,this._openerService=t,this._modeService=n,this._themeService=i,this._toUnhook=[],this._isMouseDown=!1,this._hoverClicked=!1,this._hookEvents(),this._didChangeConfigurationHandler=this._editor.onDidChangeConfiguration(function(e){e.contribInfo&&(o._hideWidgets(),o._unhookEvents(),o._hookEvents())})}return Object.defineProperty(e.prototype,"contentWidget",{get:function(){ +return this._contentWidget||this._createHoverWidget(),this._contentWidget},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"glyphWidget",{get:function(){return this._glyphWidget||this._createHoverWidget(),this._glyphWidget},enumerable:!0,configurable:!0}),e.get=function(t){return t.getContribution(e.ID)},e.prototype._hookEvents=function(){var e=this,t=function(){return e._hideWidgets()},n=this._editor.getConfiguration().contribInfo.hover;this._isHoverEnabled=n.enabled,this._isHoverSticky=n.sticky,this._isHoverEnabled?(this._toUnhook.push(this._editor.onMouseDown(function(t){return e._onEditorMouseDown(t)})),this._toUnhook.push(this._editor.onMouseUp(function(t){return e._onEditorMouseUp(t)})),this._toUnhook.push(this._editor.onMouseMove(function(t){return e._onEditorMouseMove(t)})),this._toUnhook.push(this._editor.onKeyDown(function(t){return e._onKeyDown(t)})),this._toUnhook.push(this._editor.onDidChangeModelDecorations(function(){return e._onModelDecorationsChanged() +}))):this._toUnhook.push(this._editor.onMouseMove(t)),this._toUnhook.push(this._editor.onMouseLeave(t)),this._toUnhook.push(this._editor.onDidChangeModel(t)),this._toUnhook.push(this._editor.onDidScrollChange(function(t){return e._onEditorScrollChanged(t)}))},e.prototype._unhookEvents=function(){this._toUnhook=g.dispose(this._toUnhook)},e.prototype._onModelDecorationsChanged=function(){this.contentWidget.onModelDecorationsChanged(),this.glyphWidget.onModelDecorationsChanged()},e.prototype._onEditorScrollChanged=function(e){(e.scrollTopChanged||e.scrollLeftChanged)&&this._hideWidgets()},e.prototype._onEditorMouseDown=function(e){this._isMouseDown=!0;var t=e.target.type;t!==h.MouseTargetType.CONTENT_WIDGET||e.target.detail!==p.ModesContentHoverWidget.ID?t===h.MouseTargetType.OVERLAY_WIDGET&&e.target.detail===f.ModesGlyphHoverWidget.ID||(t!==h.MouseTargetType.OVERLAY_WIDGET&&e.target.detail!==f.ModesGlyphHoverWidget.ID&&(this._hoverClicked=!1),this._hideWidgets()):this._hoverClicked=!0}, +e.prototype._onEditorMouseUp=function(e){this._isMouseDown=!1},e.prototype._onEditorMouseMove=function(e){var t=e.target.type,n=r.isMacintosh?e.event.metaKey:e.event.ctrlKey;if(!(this._isMouseDown&&this._hoverClicked&&this.contentWidget.isColorPickerVisible())&&(!this._isHoverSticky||t!==h.MouseTargetType.CONTENT_WIDGET||e.target.detail!==p.ModesContentHoverWidget.ID||n)&&(!this._isHoverSticky||t!==h.MouseTargetType.OVERLAY_WIDGET||e.target.detail!==f.ModesGlyphHoverWidget.ID||n)){if(t===h.MouseTargetType.CONTENT_EMPTY){var i=this._editor.getConfiguration().fontInfo.typicalHalfwidthCharacterWidth/2,o=e.target.detail;o&&!o.isAfterLines&&"number"==typeof o.horizontalDistanceToText&&o.horizontalDistanceToText1&&(o=new s.Selection(o.startLineNumber,o.startColumn,o.endLineNumber,o.endColumn+d-1));var c=new h.InPlaceReplaceCommand(a,o,n.value);i.editor.pushUndoStop(),i.editor.executeCommand(t,c),i.editor.pushUndoStop(),i.decorationIds=i.editor.deltaDecorations(i.decorationIds,[{range:u,options:e.DECORATION}]),i.decorationRemover&&i.decorationRemover.cancel(),i.decorationRemover=v.timeout(350),i.decorationRemover.then(function(){ +return i.decorationIds=i.editor.deltaDecorations(i.decorationIds,[])}).catch(_.onUnexpectedError)}}).catch(_.onUnexpectedError)):void 0},e.ID="editor.contrib.inPlaceReplaceController",e.DECORATION=m.ModelDecorationOptions.register({className:"valueSetReplacement"}),e=a([u(1,c.IEditorWorkerService)],e)}(),C=function(e){function t(){return e.call(this,{id:"editor.action.inPlaceReplace.up",label:n.localize(0,null),alias:"Replace with Previous Value",precondition:l.EditorContextKeys.writable,kbOpts:{kbExpr:l.EditorContextKeys.editorTextFocus,primary:3154,weight:100}})||this}return o(t,e),t.prototype.run=function(e,t){var n=y.get(t);if(n)return i.TPromise.wrap(n.run(this.id,!0))},t}(d.EditorAction),b=function(e){function t(){return e.call(this,{id:"editor.action.inPlaceReplace.down",label:n.localize(1,null),alias:"Replace with Next Value",precondition:l.EditorContextKeys.writable,kbOpts:{kbExpr:l.EditorContextKeys.editorTextFocus,primary:3156,weight:100}})||this}return o(t,e),t.prototype.run=function(e,t){ +var n=y.get(t);if(n)return i.TPromise.wrap(n.run(this.id,!1))},t}(d.EditorAction);d.registerEditorContribution(y),d.registerEditorAction(C),d.registerEditorAction(b),f.registerThemingParticipant(function(e,t){var n=e.getColor(g.editorBracketMatchBorder);n&&t.addRule(".monaco-editor.vs .valueSetReplacement { outline: solid 2px "+n+"; }")})});var d=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))(function(o,r){function s(e){try{l(i.next(e))}catch(e){r(e)}}function a(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){e.done?o(e.value):new n(function(t){t(e.value)}).then(s,a)}l((i=i.apply(e,t||[])).next())})},c=this&&this.__generator||function(e,t){function n(n){return function(s){return function(n){if(i)throw new TypeError("Generator is already executing.");for(;a;)try{if(i=1,o&&(r=2&n[0]?o.return:n[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,n[1])).done)return r;switch(o=0,r&&(n=[2&n[0],r.value]),n[0]){case 0:case 1:r=n;break;case 4:return a.label++,{value:n[1],done:!1} +;case 5:a.label++,o=n[1],n=[0];continue;case 7:n=a.ops.pop(),a.trys.pop();continue;default:if(r=a.trys,!(r=r.length>0&&r[r.length-1])&&(6===n[0]||2===n[0])){a=0;continue}if(3===n[0]&&(!r||n[1]>r[0]&&n[1]1;s.toggleClass(this.element,"multiple",e),this.keyMultipleSignatures.set(e),this.signature.innerHTML="",this.docs.innerHTML="";var t=this.hints.signatures[this.currentSignature];if(t){var o=s.append(this.signature,L(".code")),r=t.parameters.length>0,a=this.editor.getConfiguration().fontInfo;if(o.style.fontSize=a.fontSize+"px",o.style.fontFamily=a.fontFamily,r)this.renderParameters(o,t,this.hints.activeParameter);else{s.append(o,L("span")).textContent=t.label}i.dispose(this.renderDisposeables),this.renderDisposeables=[];var u=t.parameters[this.hints.activeParameter];if(u&&u.documentation){var d=L("span.documentation");if("string"==typeof u.documentation)d.textContent=u.documentation;else{c=this.markdownRenderer.render(u.documentation);s.addClass(c.element,"markdown-docs"),this.renderDisposeables.push(c), +d.appendChild(c.element)}s.append(this.docs,L("p",null,d))}if(s.toggleClass(this.signature,"has-docs",!!t.documentation),"string"==typeof t.documentation)s.append(this.docs,L("p",null,t.documentation));else{var c=this.markdownRenderer.render(t.documentation);s.addClass(c.element,"markdown-docs"),this.renderDisposeables.push(c),s.append(this.docs,c.element)}var h=String(this.currentSignature+1);if(this.hints.signatures.length<10&&(h+="/"+this.hints.signatures.length),this.overloads.textContent=h,u){var p=u.label;this.announcedLabel!==p&&(l.alert(n.localize(0,null,p)),this.announcedLabel=p)}this.editor.layoutContentWidget(this),this.scrollbar.scanDomNode()}},e.prototype.renderParameters=function(e,t,n){for(var i,o=t.label.length,r=0,a=t.parameters.length-1;a>=0;a--){var l=t.parameters[a],u=0,d=0;(r=t.label.lastIndexOf(l.label,o-1))>=0&&(u=r,d=r+l.label.length),(i=document.createElement("span")).textContent=t.label.substring(d,o),s.prepend(e,i), +(i=document.createElement("span")).className="parameter "+(a===n?"active":""),i.textContent=t.label.substring(u,d),s.prepend(e,i),o=u}(i=document.createElement("span")).textContent=t.label.substring(0,o),s.prepend(e,i)},e.prototype.next=function(){var e=this.hints.signatures.length,t=this.currentSignature%e==e-1;return e<2||t?(this.cancel(),!1):(this.currentSignature++,this.render(),!0)},e.prototype.previous=function(){var e=this.hints.signatures.length,t=0===this.currentSignature;return e<2||t?(this.cancel(),!1):(this.currentSignature--,this.render(),!0)},e.prototype.cancel=function(){this.model.cancel()},e.prototype.getDomNode=function(){return this.element},e.prototype.getId=function(){return e.ID},e.prototype.trigger=function(){this.model.trigger(0)},e.prototype.updateMaxHeight=function(){var e=Math.max(this.editor.getLayoutInfo().height/4,250);this.element.style.maxHeight=e+"px"},e.prototype.dispose=function(){this.disposables=i.dispose(this.disposables), +this.renderDisposeables=i.dispose(this.renderDisposeables),this.model&&(this.model.dispose(),this.model=null)},e.ID="editor.widget.parameterHintsWidget",e=a([u(1,m.IContextKeyService),u(2,S.IOpenerService),u(3,w.IModeService)],e)}();t.ParameterHintsWidget=N,C.registerThemingParticipant(function(e,t){var n=e.getColor(b.editorHoverBorder);if(n){var i=e.type===C.HIGH_CONTRAST?2:1;t.addRule(".monaco-editor .parameter-hints-widget { border: "+i+"px solid "+n+"; }"),t.addRule(".monaco-editor .parameter-hints-widget.multiple .body { border-left: 1px solid "+n.transparent(.5)+"; }"),t.addRule(".monaco-editor .parameter-hints-widget .signature.has-docs { border-bottom: 1px solid "+n.transparent(.5)+"; }")}var o=e.getColor(b.editorHoverBackground);o&&t.addRule(".monaco-editor .parameter-hints-widget { background-color: "+o+"; }");var r=e.getColor(b.textLinkForeground);r&&t.addRule(".monaco-editor .parameter-hints-widget a { color: "+r+"; }");var s=e.getColor(b.textCodeBlockBackground) +;s&&t.addRule(".monaco-editor .parameter-hints-widget code { background-color: "+s+"; }")})}),define(t[527],n([1,0,327,2,15,20,19,11,526,175]),function(e,t,n,i,r,s,l,d,c,h){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var p=function(){function e(e,t){this.editor=e,this.widget=t.createInstance(c.ParameterHintsWidget,this.editor)}return e.get=function(t){return t.getContribution(e.ID)},e.prototype.getId=function(){return e.ID},e.prototype.cancel=function(){this.widget.cancel()},e.prototype.previous=function(){this.widget.previous()},e.prototype.next=function(){this.widget.next()},e.prototype.trigger=function(){this.widget.trigger()},e.prototype.dispose=function(){this.widget=i.dispose(this.widget)},e.ID="editor.controller.parameterHints",e=a([u(1,r.IInstantiationService)],e)}(),f=function(e){function t(){return e.call(this,{id:"editor.action.triggerParameterHints",label:n.localize(0,null),alias:"Trigger Parameter Hints",precondition:s.EditorContextKeys.hasSignatureHelpProvider,kbOpts:{ +kbExpr:s.EditorContextKeys.editorTextFocus,primary:3082,weight:100}})||this}return o(t,e),t.prototype.run=function(e,t){var n=p.get(t);n&&n.trigger()},t}(d.EditorAction);t.TriggerParameterHintsAction=f,d.registerEditorContribution(p),d.registerEditorAction(f);var g=d.EditorCommand.bindToContribution(p.get);d.registerEditorCommand(new g({id:"closeParameterHints",precondition:h.Context.Visible,handler:function(e){return e.cancel()},kbOpts:{weight:175,kbExpr:s.EditorContextKeys.editorTextFocus,primary:9,secondary:[1033]}})),d.registerEditorCommand(new g({id:"showPrevParameterHint",precondition:l.ContextKeyExpr.and(h.Context.Visible,h.Context.MultipleSignatures),handler:function(e){return e.previous()},kbOpts:{weight:175,kbExpr:s.EditorContextKeys.editorTextFocus,primary:16,secondary:[528],mac:{primary:16,secondary:[528,302]}}})),d.registerEditorCommand(new g({id:"showNextParameterHint",precondition:l.ContextKeyExpr.and(h.Context.Visible,h.Context.MultipleSignatures),handler:function(e){return e.next()},kbOpts:{ +weight:175,kbExpr:s.EditorContextKeys.editorTextFocus,primary:18,secondary:[530],mac:{primary:18,secondary:[530,300]}}}))}),define(t[144],n([1,0,329,67,6,28,56,9,7,69,32,192,141,19,27,385]),function(e,t,n,i,r,s,a,l,u,d,c,h,p,f,g){"use strict";Object.defineProperty(t,"__esModule",{value:!0});!function(e){e.inPeekEditor=new f.RawContextKey("inReferenceSearchEditor",!0),e.notInPeekEditor=e.inPeekEditor.toNegated()}(t.PeekContext||(t.PeekContext={})),t.getOuterEditor=function(e){var t=e.get(c.ICodeEditorService).getFocusedCodeEditor();return t instanceof p.EmbeddedCodeEditorWidget?t.getParentEditor():t};var m={headerBackgroundColor:g.Color.white,primaryHeadingColor:g.Color.fromHex("#333333"),secondaryHeadingColor:g.Color.fromHex("#6c6c6cb3")},v=function(e){function t(t,n){void 0===n&&(n={});var i=e.call(this,t,n)||this;return i._onDidClose=new l.Emitter,s.mixin(i.options,m,!1),i}return o(t,e),t.prototype.dispose=function(){e.prototype.dispose.call(this),this._onDidClose.fire(this)}, +Object.defineProperty(t.prototype,"onDidClose",{get:function(){return this._onDidClose.event},enumerable:!0,configurable:!0}),t.prototype.style=function(t){var n=this.options;t.headerBackgroundColor&&(n.headerBackgroundColor=t.headerBackgroundColor),t.primaryHeadingColor&&(n.primaryHeadingColor=t.primaryHeadingColor),t.secondaryHeadingColor&&(n.secondaryHeadingColor=t.secondaryHeadingColor),e.prototype.style.call(this,t)},t.prototype._applyStyles=function(){e.prototype._applyStyles.call(this);var t=this.options;this._headElement&&(this._headElement.style.backgroundColor=t.headerBackgroundColor.toString()),this._primaryHeading&&(this._primaryHeading.style.color=t.primaryHeadingColor.toString()),this._secondaryHeading&&(this._secondaryHeading.style.color=t.secondaryHeadingColor.toString()),this._bodyElement&&(this._bodyElement.style.borderColor=t.frameColor.toString())},t.prototype._fillContainer=function(e){this.setCssClass("peekview-widget"),this._headElement=a.$(".head").getHTMLElement(), +this._bodyElement=a.$(".body").getHTMLElement(),this._fillHead(this._headElement),this._fillBody(this._bodyElement),e.appendChild(this._headElement),e.appendChild(this._bodyElement)},t.prototype._fillHead=function(e){var t=this,o=a.$(".peekview-title").on(u.EventType.CLICK,function(e){return t._onTitleClick(e)}).appendTo(this._headElement).getHTMLElement();this._primaryHeading=a.$("span.filename").appendTo(o).getHTMLElement(),this._secondaryHeading=a.$("span.dirname").appendTo(o).getHTMLElement(),this._metaHeading=a.$("span.meta").appendTo(o).getHTMLElement();var r=a.$(".peekview-actions").appendTo(this._headElement),s=this._getActionBarOptions();this._actionbarWidget=new d.ActionBar(r.getHTMLElement(),s),this._disposables.push(this._actionbarWidget),this._actionbarWidget.push(new i.Action("peekview.close",n.localize(0,null),"close-peekview-action",!0,function(){return t.dispose(),null}),{label:!1,icon:!0})},t.prototype._getActionBarOptions=function(){return{}},t.prototype._onTitleClick=function(e){}, +t.prototype.setTitle=function(e,t){a.$(this._primaryHeading).safeInnerHtml(e),this._primaryHeading.setAttribute("aria-label",e),t?a.$(this._secondaryHeading).safeInnerHtml(t):u.clearNode(this._secondaryHeading)},t.prototype.setMetaTitle=function(e){e?a.$(this._metaHeading).safeInnerHtml(e):u.clearNode(this._metaHeading)},t.prototype._doLayout=function(e,t){if(!this._isShowing&&e<0)this.dispose();else{var n=Math.ceil(1.2*this.editor.getConfiguration().lineHeight),i=e-(n+2);this._doLayoutHead(n,t),this._doLayoutBody(i,t)}},t.prototype._doLayoutHead=function(e,t){this._headElement.style.height=r.format("{0}px",e),this._headElement.style.lineHeight=this._headElement.style.height},t.prototype._doLayoutBody=function(e,t){this._bodyElement.style.height=r.format("{0}px",e)},t}(h.ZoneWidget);t.PeekViewWidget=v}),define(t[529],n([1,0,336,2,13,3,23,16,22,12,388]),function(e,t,n,i,o,r,s,l,d,c){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var h=function(){function e(e,t){var n=this;this.themeService=t, +this._disposables=[],this.allowEditorOverflow=!0,this._currentAcceptInput=null,this._currentCancelInput=null,this._editor=e,this._editor.addContentWidget(this),this._disposables.push(e.onDidChangeConfiguration(function(e){e.fontInfo&&n.updateFont()})),this._disposables.push(t.onThemeChange(function(e){return n.onThemeChange(e)}))}return e.prototype.onThemeChange=function(e){this.updateStyles(e)},e.prototype.dispose=function(){this._disposables=i.dispose(this._disposables),this._editor.removeContentWidget(this)},e.prototype.getId=function(){return"__renameInputWidget"},e.prototype.getDomNode=function(){return this._domNode||(this._inputField=document.createElement("input"),this._inputField.className="rename-input",this._inputField.type="text",this._inputField.setAttribute("aria-label",n.localize(0,null)),this._domNode=document.createElement("div"),this._domNode.style.height=this._editor.getConfiguration().lineHeight+"px",this._domNode.className="monaco-editor rename-box", +this._domNode.appendChild(this._inputField),this.updateFont(),this.updateStyles(this.themeService.getTheme())),this._domNode},e.prototype.updateStyles=function(e){if(this._inputField){var t=e.getColor(d.inputBackground),n=e.getColor(d.inputForeground),i=e.getColor(d.widgetShadow),o=e.getColor(d.inputBorder);this._inputField.style.backgroundColor=t?t.toString():null,this._inputField.style.color=n?n.toString():null,this._inputField.style.borderWidth=o?"1px":"0px",this._inputField.style.borderStyle=o?"solid":"none",this._inputField.style.borderColor=o?o.toString():"none",this._domNode.style.boxShadow=i?" 0 2px 8px "+i:null}},e.prototype.updateFont=function(){if(this._inputField){var e=this._editor.getConfiguration().fontInfo;this._inputField.style.fontFamily=e.fontFamily,this._inputField.style.fontWeight=e.fontWeight,this._inputField.style.fontSize=e.fontSize+"px"}},e.prototype.getPosition=function(){return this._visible?{position:this._position, +preference:[s.ContentWidgetPositionPreference.BELOW,s.ContentWidgetPositionPreference.ABOVE]}:null},e.prototype.acceptInput=function(){this._currentAcceptInput&&this._currentAcceptInput()},e.prototype.cancelInput=function(e){this._currentCancelInput&&this._currentCancelInput(e)},e.prototype.getInput=function(e,t,n,s){var a=this;this._position=new c.Position(e.startLineNumber,e.startColumn),this._inputField.value=t,this._inputField.setAttribute("selectionStart",n.toString()),this._inputField.setAttribute("selectionEnd",s.toString()),this._inputField.size=Math.max(1.1*(e.endColumn-e.startColumn),20);var l,u=[];return l=function(){i.dispose(u),a._hide()},new o.TPromise(function(n){a._currentCancelInput=function(e){return a._currentAcceptInput=null,a._currentCancelInput=null,n(e),!0},a._currentAcceptInput=function(){0!==a._inputField.value.trim().length&&a._inputField.value!==t?(a._currentAcceptInput=null,a._currentCancelInput=null,n(a._inputField.value)):a.cancelInput(!0)} +;u.push(a._editor.onDidChangeCursorSelection(function(){r.Range.containsPosition(e,a._editor.getPosition())||a.cancelInput(!0)})),u.push(a._editor.onDidBlurEditorWidget(function(){return a.cancelInput(!1)})),a._show()},function(){a._currentCancelInput(!0)}).then(function(e){return l(),e},function(e){return l(),o.TPromise.wrapError(e)})},e.prototype._show=function(){var e=this;this._editor.revealLineInCenterIfOutsideViewport(this._position.lineNumber,0),this._visible=!0,this._editor.layoutContentWidget(this),setTimeout(function(){e._inputField.focus(),e._inputField.setSelectionRange(parseInt(e._inputField.getAttribute("selectionStart")),parseInt(e._inputField.getAttribute("selectionEnd")))},100)},e.prototype._hide=function(){this._visible=!1,this._editor.layoutContentWidget(this)},e=a([u(1,l.IThemeService)],e)}();t.default=h}),define(t[530],n([1,0,335,10,13,19,92,11,20,529,16,14,17,12,52,3,143,68,37,127,31,32]),function(e,t,n,i,r,s,l,h,p,f,g,m,v,_,y,C,b,S,w,E,L,x){"use strict";function N(e,t,n){ +return d(this,void 0,void 0,function(){return c(this,function(i){return[2,new I(e,t).provideRenameEdits(n)]})})}Object.defineProperty(t,"__esModule",{value:!0});var I=function(){function e(e,t){this.model=e,this.position=t,this._provider=v.RenameProviderRegistry.ordered(e)}return e.prototype.hasProvider=function(){return this._provider.length>0},e.prototype.resolveRenameLocation=function(){return d(this,void 0,void 0,function(){var e,t,n,i=this;return c(this,function(o){switch(o.label){case 0:return(e=this._provider[0]).resolveRenameLocation?[4,m.asWinJsPromise(function(t){return e.resolveRenameLocation(i.model,i.position,t)})]:[3,2];case 1:t=o.sent(),o.label=2;case 2:return t||(n=this.model.getWordAtPosition(this.position))&&(t={range:new C.Range(this.position.lineNumber,n.startColumn,this.position.lineNumber,n.endColumn),text:n.word}),[2,t]}})})},e.prototype.provideRenameEdits=function(e,t,i,o){return void 0===t&&(t=0),void 0===i&&(i=[]),void 0===o&&(o=this.position),d(this,void 0,void 0,function(){ +var o,r,s=this;return c(this,function(a){switch(a.label){case 0:return t>=this._provider.length?[2,{edits:void 0,rejectReason:i.join("\n")}]:(o=this._provider[t],[4,m.asWinJsPromise(function(t){return o.provideRenameEdits(s.model,s.position,e,t)})]);case 1:return(r=a.sent())?r.rejectReason?[2,this.provideRenameEdits(e,t+1,i.concat(r.rejectReason))]:[2,r]:[2,this.provideRenameEdits(e,t+1,i.concat(n.localize(0,null)))]}})})},e}();t.rename=N;var M=new s.RawContextKey("renameInputVisible",!1),D=function(){function e(e,t,n,i,o,r){this.editor=e,this._notificationService=t,this._bulkEditService=n,this._progressService=i,this._renameInputField=new f.default(e,r),this._renameInputVisible=M.bindTo(o)}return e.get=function(t){return t.getContribution(e.ID)},e.prototype.dispose=function(){this._renameInputField.dispose()},e.prototype.getId=function(){return e.ID},e.prototype.run=function(){return d(this,void 0,void 0,function(){var e,t,i,o,s,a,l,u=this;return c(this,function(d){switch(d.label){case 0: +if(e=this.editor.getPosition(),!(t=new I(this.editor.getModel(),e)).hasProvider())return[2,void 0];d.label=1;case 1:return d.trys.push([1,3,,4]),[4,t.resolveRenameLocation()];case 2:return i=d.sent(),[3,4];case 3:return o=d.sent(),b.MessageController.get(this.editor).showMessage(o,e),[2,void 0];case 4:return i?(s=this.editor.getSelection(),a=0,l=i.text.length,C.Range.isEmpty(s)||C.Range.spansMultipleLines(s)||!C.Range.containsRange(i.range,s)||(a=Math.max(0,s.startColumn-i.range.startColumn),l=Math.min(i.range.endColumn,s.endColumn)-i.range.startColumn),this._renameInputVisible.set(!0),[2,this._renameInputField.getInput(i.range,i.text,a,l).then(function(e){u._renameInputVisible.reset();if("boolean"!=typeof e){u.editor.focus();var o=new S.EditorState(u.editor,15),s=r.TPromise.wrap(t.provideRenameEdits(e,0,[],C.Range.lift(i.range).getStartPosition()).then(function(t){if(!t.rejectReason)return u._bulkEditService.apply(t,{editor:u.editor}).then(function(t){ +t.ariaSummary&&y.alert(n.localize(1,null,i.text,e,t.ariaSummary))});o.validate(u.editor)?b.MessageController.get(u.editor).showMessage(t.rejectReason,u.editor.getPosition()):u._notificationService.info(t.rejectReason)},function(e){return u._notificationService.error(n.localize(2,null)),r.TPromise.wrapError(e)}));return u._progressService.showWhile(s,250),s}e&&u.editor.focus()},function(e){return u._renameInputVisible.reset(),r.TPromise.wrapError(e)})]):[2,void 0]}})})},e.prototype.acceptRenameInput=function(){this._renameInputField.acceptInput()},e.prototype.cancelRenameInput=function(){this._renameInputField.cancelInput(!0)},e.ID="editor.contrib.renameController",e=a([u(1,w.INotificationService),u(2,E.IBulkEditService),u(3,l.IProgressService),u(4,s.IContextKeyService),u(5,g.IThemeService)],e)}(),T=function(e){function t(){return e.call(this,{id:"editor.action.rename",label:n.localize(3,null),alias:"Rename Symbol", +precondition:s.ContextKeyExpr.and(p.EditorContextKeys.writable,p.EditorContextKeys.hasRenameProvider),kbOpts:{kbExpr:p.EditorContextKeys.editorTextFocus,primary:60,weight:100},menuOpts:{group:"1_modification",order:1.1}})||this}return o(t,e),t.prototype.runCommand=function(t,n){var o=this,r=t.get(x.ICodeEditorService),s=n||[void 0,void 0],a=s[0],l=s[1];return L.default.isUri(a)&&_.Position.isIPosition(l)?r.openCodeEditor({resource:a},r.getActiveCodeEditor()).then(function(e){e.setPosition(l),e.invokeWithinContext(function(t){return o.reportTelemetry(t,e),o.run(t,e)})},i.onUnexpectedError):e.prototype.runCommand.call(this,t,n)},t.prototype.run=function(e,t){var n=D.get(t);if(n)return r.TPromise.wrap(n.run())},t}(h.EditorAction);t.RenameAction=T,h.registerEditorContribution(D),h.registerEditorAction(T);var k=h.EditorCommand.bindToContribution(D.get);h.registerEditorCommand(new k({id:"acceptRenameInput",precondition:M,handler:function(e){return e.acceptRenameInput()},kbOpts:{weight:199, +kbExpr:p.EditorContextKeys.focus,primary:3}})),h.registerEditorCommand(new k({id:"cancelRenameInput",precondition:M,handler:function(e){return e.cancelRenameInput()},kbOpts:{weight:199,kbExpr:p.EditorContextKeys.focus,primary:9,secondary:[1033]}})),h.registerDefaultLanguageCommand("_executeDocumentRenameProvider",function(e,t,n){var o=n.newName;if("string"!=typeof o)throw i.illegalArgument("newName");return N(e,t,o)})}),define(t[531],n([1,0,341,102,6,9,10,2,7,138,278,55,49,19,23,101,52,86,103,16,22,72,121,64,62,14,40,398]),function(e,t,n,i,o,r,s,d,c,h,p,f,g,m,v,_,y,C,b,S,w,E,L,x,N,I,M){"use strict";function D(e){return e&&e.match(R)?e:null}function T(e){if(!e)return!1;var t=e.suggestion;return!!t.documentation||t.detail&&t.detail!==t.label}Object.defineProperty(t,"__esModule",{value:!0});var k=!1;t.editorSuggestWidgetBackground=w.registerColor("editorSuggestWidget.background",{dark:w.editorWidgetBackground,light:w.editorWidgetBackground,hc:w.editorWidgetBackground},n.localize(0,null)), +t.editorSuggestWidgetBorder=w.registerColor("editorSuggestWidget.border",{dark:w.editorWidgetBorder,light:w.editorWidgetBorder,hc:w.editorWidgetBorder},n.localize(1,null)),t.editorSuggestWidgetForeground=w.registerColor("editorSuggestWidget.foreground",{dark:w.editorForeground,light:w.editorForeground,hc:w.editorForeground},n.localize(2,null)),t.editorSuggestWidgetSelectedBackground=w.registerColor("editorSuggestWidget.selectedBackground",{dark:w.listFocusBackground,light:w.listFocusBackground,hc:w.listFocusBackground},n.localize(3,null)),t.editorSuggestWidgetHighlightForeground=w.registerColor("editorSuggestWidget.highlightForeground",{dark:w.listHighlightForeground,light:w.listHighlightForeground,hc:w.listHighlightForeground},n.localize(4,null));var R=/^(#([\da-f]{3}){1,2}|(rgb|hsl)a\(\s*(\d{1,3}%?\s*,\s*){3}(1|0?\.\d+)\)|(rgb|hsl)\(\s*\d{1,3}%?(\s*,\s*\d{1,3}%?){2}\s*\))$/i,O=function(){function e(e,t,n){this.widget=e,this.editor=t,this.triggerKeybindingLabel=n} +return Object.defineProperty(e.prototype,"templateId",{get:function(){return"suggestion"},enumerable:!0,configurable:!0}),e.prototype.renderTemplate=function(e){var t=this,i=Object.create(null);i.disposables=[],i.root=e,i.icon=c.append(e,c.$(".icon")),i.colorspan=c.append(i.icon,c.$("span.colorspan"));var o=c.append(e,c.$(".contents")),s=c.append(o,c.$(".main"));i.highlightedLabel=new h.HighlightedLabel(s),i.disposables.push(i.highlightedLabel),i.typeLabel=c.append(s,c.$("span.type-label")),i.readMore=c.append(s,c.$("span.readMore")),i.readMore.title=n.localize(5,null,this.triggerKeybindingLabel);var a=function(){var e=t.editor.getConfiguration(),n=e.fontInfo.fontFamily,o=(e.contribInfo.suggestFontSize||e.fontInfo.fontSize)+"px",r=(e.contribInfo.suggestLineHeight||e.fontInfo.lineHeight)+"px";i.root.style.fontSize=o,s.style.fontFamily=n,s.style.lineHeight=r,i.icon.style.height=r,i.icon.style.width=r,i.readMore.style.height=r,i.readMore.style.width=r};return a(), +r.chain(this.editor.onDidChangeConfiguration.bind(this.editor)).filter(function(e){return e.fontInfo||e.contribInfo}).on(a,null,i.disposables),i},e.prototype.renderElement=function(e,t,o){var r=this,s=o,a=e.suggestion;if(T(e)?s.root.setAttribute("aria-label",n.localize(6,null,a.label)):s.root.setAttribute("aria-label",n.localize(7,null,a.label)),s.icon.className="icon "+a.type,s.colorspan.style.backgroundColor="","color"===a.type){var l=D(a.label)||"string"==typeof a.documentation&&D(a.documentation);l&&(s.icon.className="icon customcolor",s.colorspan.style.backgroundColor=l)}s.highlightedLabel.set(a.label,i.createMatches(e.matches),"",!0),s.typeLabel.textContent=(a.detail||"").replace(/\n.*$/m,""),T(e)?(c.show(s.readMore),s.readMore.onmousedown=function(e){e.stopPropagation(),e.preventDefault()},s.readMore.onclick=function(e){e.stopPropagation(),e.preventDefault(),r.widget.toggleDetails()}):(c.hide(s.readMore),s.readMore.onmousedown=null,s.readMore.onclick=null)},e.prototype.disposeElement=function(){}, +e.prototype.disposeTemplate=function(e){e.disposables=d.dispose(e.disposables)},e}(),P=function(){function e(e,t,i,o,s){var a=this;this.widget=t,this.editor=i,this.markdownRenderer=o,this.triggerKeybindingLabel=s,this.borderWidth=1,this.disposables=[],this.el=c.append(e,c.$(".details")),this.disposables.push(d.toDisposable(function(){return e.removeChild(a.el)})),this.body=c.$(".body"),this.scrollbar=new f.DomScrollableElement(this.body,{}),c.append(this.el,this.scrollbar.getDomNode()),this.disposables.push(this.scrollbar),this.header=c.append(this.body,c.$(".header")),this.close=c.append(this.header,c.$("span.close")),this.close.title=n.localize(8,null,this.triggerKeybindingLabel),this.type=c.append(this.header,c.$("p.type")),this.docs=c.append(this.body,c.$("p.docs")),this.ariaLabel=null,this.configureFont(),r.chain(this.editor.onDidChangeConfiguration.bind(this.editor)).filter(function(e){return e.fontInfo}).on(this.configureFont,this,this.disposables),o.onDidRenderCodeBlock(function(){ +return a.scrollbar.scanDomNode()},this,this.disposables)}return Object.defineProperty(e.prototype,"element",{get:function(){return this.el},enumerable:!0,configurable:!0}),e.prototype.render=function(e){var t=this;if(this.renderDisposeable=d.dispose(this.renderDisposeable),!e||!T(e))return this.type.textContent="",this.docs.textContent="",c.addClass(this.el,"no-docs"),void(this.ariaLabel=null);if(c.removeClass(this.el,"no-docs"),"string"==typeof e.suggestion.documentation)c.removeClass(this.docs,"markdown-docs"),this.docs.textContent=e.suggestion.documentation;else{c.addClass(this.docs,"markdown-docs"),this.docs.innerHTML="";var n=this.markdownRenderer.render(e.suggestion.documentation);this.renderDisposeable=n,this.docs.appendChild(n.element)}e.suggestion.detail?(this.type.innerText=e.suggestion.detail,c.show(this.type)):(this.type.innerText="",c.hide(this.type)),this.el.style.height=this.header.offsetHeight+this.docs.offsetHeight+2*this.borderWidth+"px",this.close.onmousedown=function(e){e.preventDefault(), +e.stopPropagation()},this.close.onclick=function(e){e.preventDefault(),e.stopPropagation(),t.widget.toggleDetails()},this.body.scrollTop=0,this.scrollbar.scanDomNode(),this.ariaLabel=o.format("{0}\n{1}\n{2}",e.suggestion.label||"",e.suggestion.detail||"",e.suggestion.documentation||"")},e.prototype.getAriaLabel=function(){return this.ariaLabel},e.prototype.scrollDown=function(e){void 0===e&&(e=8),this.body.scrollTop+=e},e.prototype.scrollUp=function(e){void 0===e&&(e=8),this.body.scrollTop-=e},e.prototype.scrollTop=function(){this.body.scrollTop=0},e.prototype.scrollBottom=function(){this.body.scrollTop=this.body.scrollHeight},e.prototype.pageDown=function(){this.scrollDown(80)},e.prototype.pageUp=function(){this.scrollUp(80)},e.prototype.setBorderWidth=function(e){this.borderWidth=e},e.prototype.configureFont=function(){var e=this.editor.getConfiguration(),t=e.fontInfo.fontFamily,n=(e.contribInfo.suggestFontSize||e.fontInfo.fontSize)+"px",i=(e.contribInfo.suggestLineHeight||e.fontInfo.lineHeight)+"px" +;this.el.style.fontSize=n,this.type.style.fontFamily=t,this.close.style.height=i,this.close.style.width=i},e.prototype.dispose=function(){this.disposables=d.dispose(this.disposables),this.renderDisposeable=d.dispose(this.renderDisposeable)},e}(),A=function(){function e(e,n,i,o,s,a,l,u){var d=this;this.editor=e,this.telemetryService=n,this.allowEditorOverflow=!0,this.ignoreFocusEvents=!1,this.editorBlurTimeout=new I.TimeoutTimer,this.showTimeout=new I.TimeoutTimer,this.onDidSelectEmitter=new r.Emitter,this.onDidFocusEmitter=new r.Emitter,this.onDidHideEmitter=new r.Emitter,this.onDidShowEmitter=new r.Emitter,this.onDidSelect=this.onDidSelectEmitter.event,this.onDidFocus=this.onDidFocusEmitter.event,this.onDidHide=this.onDidHideEmitter.event,this.onDidShow=this.onDidShowEmitter.event,this.maxWidgetWidth=660,this.listWidth=330,this.storageServiceAvailable=!0,this.expandSuggestionDocs=!1,this.firstFocusInCurrentList=!1 +;var h=a.lookupKeybinding("editor.action.triggerSuggest"),f=h?" ("+h.getLabel()+")":"",g=new L.MarkdownRenderer(e,l,u);this.isAuto=!1,this.focusedItem=null,this.storageService=s,void 0===this.expandDocsSettingFromStorage()&&(this.storageService.store("expandSuggestionDocs",k,E.StorageScope.GLOBAL),void 0===this.expandDocsSettingFromStorage()&&(this.storageServiceAvailable=!1)),this.element=c.$(".editor-widget.suggest-widget"),this.editor.getConfiguration().contribInfo.iconsInSuggestions||c.addClass(this.element,"no-icons"),this.messageElement=c.append(this.element,c.$(".message")),this.listElement=c.append(this.element,c.$(".tree")),this.details=new P(this.element,this,this.editor,g,f);var m=new O(this,this.editor,f);this.list=new p.List(this.listElement,this,[m],{useShadows:!1,selectOnMouseDown:!0,focusOnMouseDown:!1,openController:{shouldOpen:function(){return!1}}}),this.toDispose=[b.attachListStyler(this.list,o,{listInactiveFocusBackground:t.editorSuggestWidgetSelectedBackground, +listInactiveFocusOutline:w.activeContrastBorder}),o.onThemeChange(function(e){return d.onThemeChange(e)}),e.onDidBlurEditorText(function(){return d.onEditorBlur()}),e.onDidLayoutChange(function(){return d.onEditorLayoutChange()}),this.list.onSelectionChange(function(e){return d.onListSelection(e)}),this.list.onFocusChange(function(e){return d.onListFocus(e)}),this.editor.onDidChangeCursorSelection(function(){return d.onCursorSelectionChanged()})],this.suggestWidgetVisible=_.Context.Visible.bindTo(i),this.suggestWidgetMultipleSuggestions=_.Context.MultipleSuggestions.bindTo(i),this.suggestionSupportsAutoAccept=_.Context.AcceptOnKey.bindTo(i),this.editor.addContentWidget(this),this.setState(0),this.onThemeChange(o.getTheme())}return e.prototype.onCursorSelectionChanged=function(){0!==this.state&&this.editor.layoutContentWidget(this)},e.prototype.onEditorBlur=function(){var e=this;this.editorBlurTimeout.cancelAndSet(function(){e.editor.hasTextFocus()||e.setState(0)},150)}, +e.prototype.onEditorLayoutChange=function(){3!==this.state&&5!==this.state||!this.expandDocsSettingFromStorage()||this.expandSideOrBelow()},e.prototype.onListSelection=function(e){var t=this;if(e.elements.length){var i=e.elements[0],o=e.indexes[0];i.resolve(M.CancellationToken.None).then(function(){t.onDidSelectEmitter.fire({item:i,index:o,model:t.completionModel}),y.alert(n.localize(11,null,i.suggestion.label)),t.editor.focus()})}},e.prototype._getSuggestionAriaAlertLabel=function(e){return T(e)?n.localize(12,null,e.suggestion.label):n.localize(13,null,e.suggestion.label)},e.prototype._ariaAlert=function(e){this._lastAriaAlertLabel!==e&&(this._lastAriaAlertLabel=e,this._lastAriaAlertLabel&&y.alert(this._lastAriaAlertLabel))},e.prototype.onThemeChange=function(e){var n=e.getColor(t.editorSuggestWidgetBackground);n&&(this.listElement.style.backgroundColor=n.toString(),this.details.element.style.backgroundColor=n.toString(),this.messageElement.style.backgroundColor=n.toString()) +;var i=e.getColor(t.editorSuggestWidgetBorder);i&&(this.listElement.style.borderColor=i.toString(),this.details.element.style.borderColor=i.toString(),this.messageElement.style.borderColor=i.toString(),this.detailsBorderColor=i.toString());var o=e.getColor(w.focusBorder);o&&(this.detailsFocusBorderColor=o.toString()),this.details.setBorderWidth("hc"===e.type?2:1)},e.prototype.onListFocus=function(e){var t=this;if(!this.ignoreFocusEvents){if(!e.elements.length)return this.currentSuggestionDetails&&(this.currentSuggestionDetails.cancel(),this.currentSuggestionDetails=null,this.focusedItem=null),void this._ariaAlert(null);var n=e.elements[0];if(this._ariaAlert(this._getSuggestionAriaAlertLabel(n)),this.firstFocusInCurrentList=!this.focusedItem,n!==this.focusedItem){this.currentSuggestionDetails&&(this.currentSuggestionDetails.cancel(),this.currentSuggestionDetails=null);var i=e.indexes[0];this.suggestionSupportsAutoAccept.set(!n.suggestion.noAutoAccept),this.focusedItem=n,this.list.reveal(i), +this.currentSuggestionDetails=I.createCancelablePromise(function(e){return n.resolve(e)}),this.currentSuggestionDetails.then(function(){t.ignoreFocusEvents=!0,t.list.splice(i,1,[n]),t.list.setFocus([i]),t.ignoreFocusEvents=!1,t.expandDocsSettingFromStorage()?t.showDetails():c.removeClass(t.element,"docs-side")}).catch(s.onUnexpectedError).then(function(){t.focusedItem===n&&(t.currentSuggestionDetails=null)}),this.onDidFocusEmitter.fire({item:n,index:i,model:this.completionModel})}}},e.prototype.setState=function(t){if(this.element){var n=this.state!==t;switch(this.state=t,c.toggleClass(this.element,"frozen",4===t),t){case 0:c.hide(this.messageElement,this.details.element,this.listElement),this.hide(),this.listHeight=0,n&&this.list.splice(0,this.list.length),this.focusedItem=null;break;case 1:this.messageElement.textContent=e.LOADING_MESSAGE,c.hide(this.listElement,this.details.element),c.show(this.messageElement),c.removeClass(this.element,"docs-side"),this.show(),this.focusedItem=null;break;case 2: +this.messageElement.textContent=e.NO_SUGGESTIONS_MESSAGE,c.hide(this.listElement,this.details.element),c.show(this.messageElement),c.removeClass(this.element,"docs-side"),this.show(),this.focusedItem=null;break;case 3:case 4:c.hide(this.messageElement),c.show(this.listElement),this.show();break;case 5:c.hide(this.messageElement),c.show(this.details.element,this.listElement),this.show(),this._ariaAlert(this.details.getAriaLabel())}}},e.prototype.showTriggered=function(e){var t=this;0===this.state&&(this.isAuto=!!e,this.isAuto||(this.loadingTimeout=setTimeout(function(){t.loadingTimeout=null,t.setState(1)},50)))},e.prototype.showSuggestions=function(e,t,n,i){if(this.loadingTimeout&&(clearTimeout(this.loadingTimeout),this.loadingTimeout=null),this.completionModel!==e&&(this.completionModel=e),n&&2!==this.state&&0!==this.state)this.setState(4);else{var o=this.completionModel.items.length,r=0===o;if(this.suggestWidgetMultipleSuggestions.set(o>1),r)i?this.setState(0):this.setState(2),this.completionModel=null;else{ +var s=this.completionModel.stats;s.wasAutomaticallyTriggered=!!i,this.telemetryService.publicLog("suggestWidget",l({},s,this.editor.getTelemetryData())),this.list.splice(0,this.list.length,this.completionModel.items),n?this.setState(4):this.setState(3),this.list.reveal(t,t),this.list.setFocus([t]),this.detailsBorderColor&&(this.details.element.style.borderColor=this.detailsBorderColor)}}},e.prototype.selectNextPage=function(){switch(this.state){case 0:return!1;case 5:return this.details.pageDown(),!0;case 1:return!this.isAuto;default:return this.list.focusNextPage(),!0}},e.prototype.selectNext=function(){switch(this.state){case 0:return!1;case 1:return!this.isAuto;default:return this.list.focusNext(1,!0),!0}},e.prototype.selectLast=function(){switch(this.state){case 0:return!1;case 5:return this.details.scrollBottom(),!0;case 1:return!this.isAuto;default:return this.list.focusLast(),!0}},e.prototype.selectPreviousPage=function(){switch(this.state){case 0:return!1;case 5:return this.details.pageUp(),!0;case 1: +return!this.isAuto;default:return this.list.focusPreviousPage(),!0}},e.prototype.selectPrevious=function(){switch(this.state){case 0:return!1;case 1:return!this.isAuto;default:return this.list.focusPrevious(1,!0),!1}},e.prototype.selectFirst=function(){switch(this.state){case 0:return!1;case 5:return this.details.scrollTop(),!0;case 1:return!this.isAuto;default:return this.list.focusFirst(),!0}},e.prototype.getFocusedItem=function(){if(0!==this.state&&2!==this.state&&1!==this.state)return{item:this.list.getFocusedElements()[0],index:this.list.getFocus()[0],model:this.completionModel}},e.prototype.toggleDetailsFocus=function(){5===this.state?(this.setState(3),this.detailsBorderColor&&(this.details.element.style.borderColor=this.detailsBorderColor)):3===this.state&&this.expandDocsSettingFromStorage()&&(this.setState(5),this.detailsFocusBorderColor&&(this.details.element.style.borderColor=this.detailsFocusBorderColor)), +this.telemetryService.publicLog("suggestWidget:toggleDetailsFocus",this.editor.getTelemetryData())},e.prototype.toggleDetails=function(){if(T(this.list.getFocusedElements()[0]))if(this.expandDocsSettingFromStorage())this.updateExpandDocsSetting(!1),c.hide(this.details.element),c.removeClass(this.element,"docs-side"),c.removeClass(this.element,"docs-below"),this.editor.layoutContentWidget(this),this.telemetryService.publicLog("suggestWidget:collapseDetails",this.editor.getTelemetryData());else{if(3!==this.state&&5!==this.state&&4!==this.state)return;this.updateExpandDocsSetting(!0),this.showDetails(),this.telemetryService.publicLog("suggestWidget:expandDetails",this.editor.getTelemetryData())}},e.prototype.showDetails=function(){this.expandSideOrBelow(),c.show(this.details.element),this.details.render(this.list.getFocusedElements()[0]),this.details.element.style.maxHeight=this.maxWidgetHeight+"px",this.listElement.style.marginTop="0px",this.editor.layoutContentWidget(this),this.adjustDocsPosition(), +this.editor.focus(),this._ariaAlert(this.details.getAriaLabel())},e.prototype.show=function(){var e=this,t=this.updateListHeight();t!==this.listHeight&&(this.editor.layoutContentWidget(this),this.listHeight=t),this.suggestWidgetVisible.set(!0),this.showTimeout.cancelAndSet(function(){c.addClass(e.element,"visible"),e.onDidShowEmitter.fire(e)},100)},e.prototype.hide=function(){this.suggestWidgetVisible.reset(),this.suggestWidgetMultipleSuggestions.reset(),c.removeClass(this.element,"visible")},e.prototype.hideWidget=function(){clearTimeout(this.loadingTimeout),this.setState(0),this.onDidHideEmitter.fire(this)},e.prototype.getPosition=function(){return 0===this.state?null:{position:this.editor.getPosition(),preference:[v.ContentWidgetPositionPreference.BELOW,v.ContentWidgetPositionPreference.ABOVE]}},e.prototype.getDomNode=function(){return this.element},e.prototype.getId=function(){return e.ID},e.prototype.updateListHeight=function(){var e=0;if(2===this.state||1===this.state)e=this.unfocusedHeight;else{ +var t=this.list.contentHeight/this.unfocusedHeight;e=Math.min(t,12)*this.unfocusedHeight}return this.element.style.lineHeight=this.unfocusedHeight+"px",this.listElement.style.height=e+"px",this.list.layout(e),e},e.prototype.adjustDocsPosition=function(){var e=this.editor.getConfiguration().fontInfo.lineHeight,t=this.editor.getScrolledVisiblePosition(this.editor.getPosition()),n=c.getDomNodePagePosition(this.editor.getDomNode()),i=n.left+t.left,o=n.top+t.top+t.height,r=c.getDomNodePagePosition(this.element),s=r.left,a=r.top;sa&&this.details.element.offsetHeight>this.listElement.offsetHeight&&(this.listElement.style.marginTop=this.details.element.offsetHeight-this.listElement.offsetHeight+"px")},e.prototype.expandSideOrBelow=function(){if(!T(this.focusedItem)&&this.firstFocusInCurrentList)return c.removeClass(this.element,"docs-side"), +void c.removeClass(this.element,"docs-below");var e=this.element.style.maxWidth.match(/(\d+)px/);!e||Number(e[1])0&&this._activeAcceptCharacters.add(i[0])}}else this.reset()},e.prototype.reset=function(){this._activeItem=void 0},e.prototype.dispose=function(){s.dispose(this._disposables)},e}(),E=function(){function e(e,t,n,i){var o=this;this._editor=e,this._commandService=t,this._contextKeyService=n,this._instantiationService=i,this._toDispose=[],this._model=new C.SuggestModel(this._editor),this._memory=i.createInstance(S.SuggestMemories,this._editor.getConfiguration().contribInfo.suggestSelection),this._toDispose.push(this._model.onDidTrigger(function(e){o._widget||o._createSuggestWidget(),o._widget.showTriggered(e.auto)})), +this._toDispose.push(this._model.onDidSuggest(function(e){var t=o._memory.select(o._editor.getModel(),o._editor.getPosition(),e.completionModel.items);o._widget.showSuggestions(e.completionModel,t,e.isFrozen,e.auto)})),this._toDispose.push(this._model.onDidCancel(function(e){o._widget&&!e.retrigger&&o._widget.hideWidget()}));var r=y.Context.AcceptSuggestionsOnEnter.bindTo(n),s=function(){var e=o._editor.getConfiguration().contribInfo,t=e.acceptSuggestionOnEnter,n=e.suggestSelection;r.set("on"===t||"smart"===t),o._memory.setMode(n)};this._toDispose.push(this._editor.onDidChangeConfiguration(function(e){return s()})),s()}return e.get=function(t){return t.getContribution(e.ID)},e.prototype._createSuggestWidget=function(){var e=this;this._widget=this._instantiationService.createInstance(b.SuggestWidget,this._editor),this._toDispose.push(this._widget.onDidSelect(this._onDidSelectItem,this));var t=new w(this._editor,this._widget,function(t){return e._onDidSelectItem(t)}) +;this._toDispose.push(t,this._model.onDidSuggest(function(e){0===e.completionModel.items.length&&t.reset()}));var n=y.Context.MakesTextEdit.bindTo(this._contextKeyService);this._toDispose.push(this._widget.onDidFocus(function(t){var i=t.item,o=e._editor.getPosition(),r=i.position.column-i.suggestion.overwriteBefore,s=o.column,a=!0;if("smart"===e._editor.getConfiguration().contribInfo.acceptSuggestionOnEnter&&2===e._model.state&&!i.suggestion.command&&!i.suggestion.additionalTextEdits&&"textmate"!==i.suggestion.snippetType&&s-r===i.suggestion.insertText.length){a=e._editor.getModel().getValueInRange({startLineNumber:o.lineNumber,startColumn:r,endLineNumber:o.lineNumber,endColumn:s})!==i.suggestion.insertText}n.set(a)})),this._toDispose.push({dispose:function(){n.reset()}})},e.prototype.getId=function(){return e.ID},e.prototype.dispose=function(){this._toDispose=s.dispose(this._toDispose),this._widget&&(this._widget.dispose(),this._widget=null),this._model&&(this._model.dispose(),this._model=null)}, +e.prototype._onDidSelectItem=function(e){var t;if(e&&e.item){var n=e.item,o=n.suggestion,r=n.position,s=this._editor.getPosition().column-r.column;this._editor.pushUndoStop(),Array.isArray(o.additionalTextEdits)&&this._editor.executeEdits("suggestController.additionalTextEdits",o.additionalTextEdits.map(function(e){return g.EditOperation.replace(m.Range.lift(e.range),e.text)})),this._memory.memorize(this._editor.getModel(),this._editor.getPosition(),e.item);var a=o.insertText;"textmate"!==o.snippetType&&(a=v.SnippetParser.escape(a)),_.SnippetController2.get(this._editor).insert(a,o.overwriteBefore+s,o.overwriteAfter,!1,!1),this._editor.pushUndoStop(),o.command?o.command.id===L.id?this._model.trigger({auto:!0},!0):((t=this._commandService).executeCommand.apply(t,[o.command.id].concat(o.command.arguments)).done(void 0,i.onUnexpectedError),this._model.cancel()):this._model.cancel(),this._alertCompletionItem(e.item)}else this._model.cancel()},e.prototype._alertCompletionItem=function(e){ +var t=e.suggestion,i=n.localize(0,null,t.label,t.insertText);f.alert(i)},e.prototype.triggerSuggest=function(e){this._model.trigger({auto:!1},!1,e),this._editor.revealLine(this._editor.getPosition().lineNumber,0),this._editor.focus()},e.prototype.acceptSelectedSuggestion=function(){if(this._widget){var e=this._widget.getFocusedItem();this._onDidSelectItem(e)}},e.prototype.cancelSuggestWidget=function(){this._widget&&(this._model.cancel(),this._widget.hideWidget())},e.prototype.selectNextSuggestion=function(){this._widget&&this._widget.selectNext()},e.prototype.selectNextPageSuggestion=function(){this._widget&&this._widget.selectNextPage()},e.prototype.selectLastSuggestion=function(){this._widget&&this._widget.selectLast()},e.prototype.selectPrevSuggestion=function(){this._widget&&this._widget.selectPrevious()},e.prototype.selectPrevPageSuggestion=function(){this._widget&&this._widget.selectPreviousPage()},e.prototype.selectFirstSuggestion=function(){this._widget&&this._widget.selectFirst()}, +e.prototype.toggleSuggestionDetails=function(){this._widget&&this._widget.toggleDetails()},e.prototype.toggleSuggestionFocus=function(){this._widget&&this._widget.toggleDetailsFocus()},e.ID="editor.contrib.suggestController",e=a([u(1,c.ICommandService),u(2,d.IContextKeyService),u(3,l.IInstantiationService)],e)}();t.SuggestController=E;var L=function(e){function t(){return e.call(this,{id:t.id,label:n.localize(1,null),alias:"Trigger Suggest",precondition:d.ContextKeyExpr.and(h.EditorContextKeys.writable,h.EditorContextKeys.hasCompletionItemProvider),kbOpts:{kbExpr:h.EditorContextKeys.textInputFocus,primary:2058,mac:{primary:266},weight:100}})||this}return o(t,e),t.prototype.run=function(e,t){var n=E.get(t);n&&n.triggerSuggest()},t.id="editor.action.triggerSuggest",t}(p.EditorAction);t.TriggerSuggestAction=L,p.registerEditorContribution(E),p.registerEditorAction(L);var x=p.EditorCommand.bindToContribution(E.get);p.registerEditorCommand(new x({id:"acceptSelectedSuggestion",precondition:y.Context.Visible, +handler:function(e){return e.acceptSelectedSuggestion()},kbOpts:{weight:190,kbExpr:h.EditorContextKeys.textInputFocus,primary:2}})),p.registerEditorCommand(new x({id:"acceptSelectedSuggestionOnEnter",precondition:y.Context.Visible,handler:function(e){return e.acceptSelectedSuggestion()},kbOpts:{weight:190,kbExpr:d.ContextKeyExpr.and(h.EditorContextKeys.textInputFocus,y.Context.AcceptSuggestionsOnEnter,y.Context.MakesTextEdit),primary:3}})),p.registerEditorCommand(new x({id:"hideSuggestWidget",precondition:y.Context.Visible,handler:function(e){return e.cancelSuggestWidget()},kbOpts:{weight:190,kbExpr:h.EditorContextKeys.textInputFocus,primary:9,secondary:[1033]}})),p.registerEditorCommand(new x({id:"selectNextSuggestion",precondition:d.ContextKeyExpr.and(y.Context.Visible,y.Context.MultipleSuggestions),handler:function(e){return e.selectNextSuggestion()},kbOpts:{weight:190,kbExpr:h.EditorContextKeys.textInputFocus,primary:18,secondary:[2066],mac:{primary:18,secondary:[2066,300]}}})), +p.registerEditorCommand(new x({id:"selectNextPageSuggestion",precondition:d.ContextKeyExpr.and(y.Context.Visible,y.Context.MultipleSuggestions),handler:function(e){return e.selectNextPageSuggestion()},kbOpts:{weight:190,kbExpr:h.EditorContextKeys.textInputFocus,primary:12,secondary:[2060]}})),p.registerEditorCommand(new x({id:"selectLastSuggestion",precondition:d.ContextKeyExpr.and(y.Context.Visible,y.Context.MultipleSuggestions),handler:function(e){return e.selectLastSuggestion()}})),p.registerEditorCommand(new x({id:"selectPrevSuggestion",precondition:d.ContextKeyExpr.and(y.Context.Visible,y.Context.MultipleSuggestions),handler:function(e){return e.selectPrevSuggestion()},kbOpts:{weight:190,kbExpr:h.EditorContextKeys.textInputFocus,primary:16,secondary:[2064],mac:{primary:16,secondary:[2064,302]}}})),p.registerEditorCommand(new x({id:"selectPrevPageSuggestion",precondition:d.ContextKeyExpr.and(y.Context.Visible,y.Context.MultipleSuggestions),handler:function(e){return e.selectPrevPageSuggestion()},kbOpts:{ +weight:190,kbExpr:h.EditorContextKeys.textInputFocus,primary:11,secondary:[2059]}})),p.registerEditorCommand(new x({id:"selectFirstSuggestion",precondition:d.ContextKeyExpr.and(y.Context.Visible,y.Context.MultipleSuggestions),handler:function(e){return e.selectFirstSuggestion()}})),p.registerEditorCommand(new x({id:"toggleSuggestionDetails",precondition:y.Context.Visible,handler:function(e){return e.toggleSuggestionDetails()},kbOpts:{weight:190,kbExpr:h.EditorContextKeys.textInputFocus,primary:2058,mac:{primary:266}}})),p.registerEditorCommand(new x({id:"toggleSuggestionFocus",precondition:y.Context.Visible,handler:function(e){return e.toggleSuggestionFocus()},kbOpts:{weight:190,kbExpr:h.EditorContextKeys.textInputFocus,primary:2570,mac:{primary:778}}}))}),define(t[533],n([1,0,343,14,10,3,11,17,2,22,16,54,29,19,20,25,24,40]),function(e,t,n,i,r,s,l,d,c,h,p,f,g,m,v,_,y,C){"use strict";function b(e,t,n){var o=d.DocumentHighlightProviderRegistry.ordered(e);return i.first2(o.map(function(i){return function(){ +return Promise.resolve(i.provideDocumentHighlights(e,t,n)).then(void 0,r.onUnexpectedExternalError)}}),function(e){return!_.isFalsyOrEmpty(e)})}Object.defineProperty(t,"__esModule",{value:!0}),t.editorWordHighlight=h.registerColor("editor.wordHighlightBackground",{dark:"#575757B8",light:"#57575740",hc:null},n.localize(0,null),!0),t.editorWordHighlightStrong=h.registerColor("editor.wordHighlightStrongBackground",{dark:"#004972B8",light:"#0e639c40",hc:null},n.localize(1,null),!0),t.editorWordHighlightBorder=h.registerColor("editor.wordHighlightBorder",{light:null,dark:null,hc:h.activeContrastBorder},n.localize(2,null)),t.editorWordHighlightStrongBorder=h.registerColor("editor.wordHighlightStrongBorder",{light:null,dark:null,hc:h.activeContrastBorder},n.localize(3,null)),t.overviewRulerWordHighlightForeground=h.registerColor("editorOverviewRuler.wordHighlightForeground",{dark:"#A0A0A0CC",light:"#A0A0A0CC",hc:"#A0A0A0CC"},n.localize(4,null),!0), +t.overviewRulerWordHighlightStrongForeground=h.registerColor("editorOverviewRuler.wordHighlightStrongForeground",{dark:"#C0A0C0CC",light:"#C0A0C0CC",hc:"#C0A0C0CC"},n.localize(5,null),!0),t.ctxHasWordHighlights=new m.RawContextKey("hasWordHighlights",!1),t.getOccurrencesAtPosition=b,l.registerDefaultLanguageCommand("_executeDocumentHighlights",function(e,t){return b(e,t,C.CancellationToken.None)});var S=function(){function e(e,n){var i=this;this.workerRequestTokenId=0,this.workerRequest=null,this.workerRequestCompleted=!1,this.workerRequestValue=[],this.lastCursorPositionChangeTime=0,this.renderDecorationsTimer=-1,this.editor=e,this._hasWordHighlights=t.ctxHasWordHighlights.bindTo(n),this._ignorePositionChangeEvent=!1,this.occurrencesHighlight=this.editor.getConfiguration().contribInfo.occurrencesHighlight,this.model=this.editor.getModel(),this.toUnhook=[],this.toUnhook.push(e.onDidChangeCursorPosition(function(e){i._ignorePositionChangeEvent||i.occurrencesHighlight&&i._onPositionChanged(e)})), +this.toUnhook.push(e.onDidChangeModel(function(e){i._stopAll(),i.model=i.editor.getModel()})),this.toUnhook.push(e.onDidChangeModelContent(function(e){i._stopAll()})),this.toUnhook.push(e.onDidChangeConfiguration(function(e){var t=i.editor.getConfiguration().contribInfo.occurrencesHighlight;i.occurrencesHighlight!==t&&(i.occurrencesHighlight=t,i._stopAll())})),this._lastWordRange=null,this._decorationIds=[],this.workerRequestTokenId=0,this.workerRequest=null,this.workerRequestCompleted=!1,this.lastCursorPositionChangeTime=0,this.renderDecorationsTimer=-1}return e.prototype.hasDecorations=function(){return this._decorationIds.length>0},e.prototype.restore=function(){this.occurrencesHighlight&&this._run()},e.prototype._getSortedHighlights=function(){var e=this;return this._decorationIds.map(function(t){return e.model.getDecorationRange(t)}).sort(s.Range.compareRangesUsingStarts)},e.prototype.moveNext=function(){var e=this,t=this._getSortedHighlights(),n=t[(_.firstIndex(t,function(t){ +return t.containsPosition(e.editor.getPosition())})+1)%t.length];try{this._ignorePositionChangeEvent=!0,this.editor.setPosition(n.getStartPosition()),this.editor.revealRangeInCenterIfOutsideViewport(n)}finally{this._ignorePositionChangeEvent=!1}},e.prototype.moveBack=function(){var e=this,t=this._getSortedHighlights(),n=t[(_.firstIndex(t,function(t){return t.containsPosition(e.editor.getPosition())})-1+t.length)%t.length];try{this._ignorePositionChangeEvent=!0,this.editor.setPosition(n.getStartPosition()),this.editor.revealRangeInCenterIfOutsideViewport(n)}finally{this._ignorePositionChangeEvent=!1}},e.prototype._removeDecorations=function(){this._decorationIds.length>0&&(this._decorationIds=this.editor.deltaDecorations(this._decorationIds,[]),this._hasWordHighlights.set(!1))},e.prototype._stopAll=function(){this._lastWordRange=null,this._removeDecorations(),-1!==this.renderDecorationsTimer&&(clearTimeout(this.renderDecorationsTimer),this.renderDecorationsTimer=-1), +null!==this.workerRequest&&(this.workerRequest.cancel(),this.workerRequest=null),this.workerRequestCompleted||(this.workerRequestTokenId++,this.workerRequestCompleted=!0)},e.prototype._onPositionChanged=function(e){this.occurrencesHighlight&&e.reason===f.CursorChangeReason.Explicit?this._run():this._stopAll()},e.prototype._run=function(){var e=this;if(d.DocumentHighlightProviderRegistry.has(this.model)){var t=this.editor.getSelection();if(t.startLineNumber===t.endLineNumber){var n=t.startLineNumber,o=t.startColumn,a=t.endColumn,l=this.model.getWordAtPosition({lineNumber:n,column:o});if(!l||l.startColumn>o||l.endColumn=a&&(c=!0)}if(this.lastCursorPositionChangeTime=(new Date).getTime(), +c)this.workerRequestCompleted&&-1!==this.renderDecorationsTimer&&(clearTimeout(this.renderDecorationsTimer),this.renderDecorationsTimer=-1,this._beginRenderDecorations());else{this._stopAll();var g=++this.workerRequestTokenId;this.workerRequestCompleted=!1,this.workerRequest=i.createCancelablePromise(function(t){return b(e.model,e.editor.getPosition(),t)}),this.workerRequest.then(function(t){g===e.workerRequestTokenId&&(e.workerRequestCompleted=!0,e.workerRequestValue=t||[],e._beginRenderDecorations())},r.onUnexpectedError)}this._lastWordRange=u}}else this._stopAll()}else this._stopAll()},e.prototype._beginRenderDecorations=function(){var e=this,t=(new Date).getTime(),n=this.lastCursorPositionChangeTime+250;t>=n?(this.renderDecorationsTimer=-1,this.renderDecorations()):this.renderDecorationsTimer=setTimeout(function(){e.renderDecorations()},n-t)},e.prototype.renderDecorations=function(){this.renderDecorationsTimer=-1;for(var t=[],n=0,i=this.workerRequestValue.length;n0?r.format(T,e.length):null:N}(t,i);switch(e.wrappingInfo.inDiffEditor?e.readOnly?s+=n.localize(7,null):s+=n.localize(8,null):e.readOnly?s+=n.localize(9,null):s+=n.localize(10,null),e.accessibilitySupport){case 0:var a=C.isMacintosh?n.localize(11,null):n.localize(12,null);s+="\n\n - "+a;break;case 2:s+="\n\n - "+n.localize(13,null);break;case 1:s+="\n\n - "+n.localize(14,null),s+=" "+a}var u=n.localize(15,null),d=n.localize(16,null),c=n.localize(17,null),h=n.localize(18,null);e.tabFocusMode?s+="\n\n - "+this._descriptionForCommand(v.ToggleTabFocusModeAction.ID,u,d):s+="\n\n - "+this._descriptionForCommand(v.ToggleTabFocusModeAction.ID,c,h);s+="\n\n - "+(C.isMacintosh?n.localize(19,null):n.localize(20,null)), +s+="\n\n"+n.localize(21,null),this._contentDomNode.domNode.appendChild(l.renderFormattedText(s)),this._contentDomNode.domNode.setAttribute("aria-label",s)},t.prototype.hide=function(){this._isVisible&&(this._isVisible=!1,this._isVisibleKey.reset(),this._domNode.setDisplay("none"),this._domNode.setAttribute("aria-hidden","true"),this._contentDomNode.domNode.tabIndex=-1,s.clearNode(this._contentDomNode.domNode),this._editor.focus())},t.prototype._layout=function(){var e=this._editor.getLayoutInfo(),n=Math.max(5,Math.min(t.WIDTH,e.width-40)),i=Math.max(5,Math.min(t.HEIGHT,e.height-40));this._domNode.setWidth(n),this._domNode.setHeight(i);var o=Math.round((e.height-i)/2);this._domNode.setTop(o);var r=Math.round((e.width-n)/2);this._domNode.setLeft(r)},t.ID="editor.contrib.accessibilityHelpWidget",t.WIDTH=500,t.HEIGHT=300,t=a([u(1,f.IContextKeyService),u(2,p.IKeybindingService),u(3,S.IOpenerService)],t)}(c.Widget),R=function(e){function t(){return e.call(this,{id:"editor.action.showAccessibilityHelp", +label:n.localize(22,null),alias:"Show Accessibility Help",precondition:null,kbOpts:{kbExpr:g.EditorContextKeys.focus,primary:E.isIE?2107:571,weight:100}})||this}return o(t,e),t.prototype.run=function(e,t){var n=x.get(t);n&&n.show()},t}(m.EditorAction);m.registerEditorContribution(x),m.registerEditorAction(R);var O=m.EditorCommand.bindToContribution(x.get);m.registerEditorCommand(new O({id:"closeAccessibilityHelp",precondition:L,handler:function(e){return e.hide()},kbOpts:{weight:200,kbExpr:g.EditorContextKeys.focus,primary:9,secondary:[1033]}})),_.registerThemingParticipant(function(e,t){var n=e.getColor(y.editorWidgetBackground);n&&t.addRule(".monaco-editor .accessibilityHelpWidget { background-color: "+n+"; }");var i=e.getColor(y.widgetShadow);i&&t.addRule(".monaco-editor .accessibilityHelpWidget { box-shadow: 0 2px 8px "+i+"; }");var o=e.getColor(y.contrastBorder);o&&t.addRule(".monaco-editor .accessibilityHelpWidget { border: 2px solid "+o+"; }")})}), +define(t[535],n([1,0,345,2,6,11,23,64,17,84,60,27,16,22,406]),function(e,t,n,i,r,s,l,d,c,h,p,f,g,m){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var v=function(e){function t(t,n,i){var o=e.call(this)||this;return o._editor=t,o._standaloneThemeService=n,o._modeService=i,o._widget=null,o._register(o._editor.onDidChangeModel(function(e){return o.stop()})),o._register(o._editor.onDidChangeModelLanguage(function(e){return o.stop()})),o._register(c.TokenizationRegistry.onDidChange(function(e){return o.stop()})),o}return o(t,e),t.get=function(e){return e.getContribution(t.ID)},t.prototype.getId=function(){return t.ID},t.prototype.dispose=function(){this.stop(),e.prototype.dispose.call(this)},t.prototype.launch=function(){this._widget||this._editor.getModel()&&(this._widget=new y(this._editor,this._standaloneThemeService,this._modeService))},t.prototype.stop=function(){this._widget&&(this._widget.dispose(),this._widget=null)},t.ID="editor.contrib.inspectTokens", +t=a([u(1,h.IStandaloneThemeService),u(2,d.IModeService)],t)}(i.Disposable),_=function(e){function t(){return e.call(this,{id:"editor.action.inspectTokens",label:n.localize(0,null),alias:"Developer: Inspect Tokens",precondition:null})||this}return o(t,e),t.prototype.run=function(e,t){var n=v.get(t);n&&n.launch()},t}(s.EditorAction),y=function(e){function t(t,n,i){var o=e.call(this)||this;return o.allowEditorOverflow=!0,o._editor=t,o._modeService=i,o._model=o._editor.getModel(),o._domNode=document.createElement("div"),o._domNode.className="tokens-inspect-widget",o._tokenizationSupport=function(e){var t=c.TokenizationRegistry.get(e.language);return t||{getInitialState:function(){return p.NULL_STATE},tokenize:function(t,n,i){return p.nullTokenize(e.language,t,n,i)},tokenize2:function(t,n,i){return p.nullTokenize2(e.id,t,n,i)}}}(o._model.getLanguageIdentifier()),o._compute(o._editor.getPosition()),o._register(o._editor.onDidChangeCursorPosition(function(e){return o._compute(o._editor.getPosition())})), +o._editor.addContentWidget(o),o}return o(t,e),t.prototype.dispose=function(){this._editor.removeContentWidget(this),e.prototype.dispose.call(this)},t.prototype.getId=function(){return t._ID},t.prototype._compute=function(e){for(var t=this._getTokensAtLine(e.lineNumber),n=0,i=t.tokens1.length-1;i>=0;i--){var o=t.tokens1[i];if(e.column-1>=o.offset){n=i;break}}for(var s=0,i=t.tokens2.length>>>1;i>=0;i--)if(e.column-1>=t.tokens2[i<<1]){s=i;break}var a="",l=this._model.getLineContent(e.lineNumber),u="";if(n'+function(e){for(var t="",n=0,i=e.length;n('+u.length+" "+(1===u.length?"char":"chars")+")", +a+='
    ';var h=this._decodeMetadata(t.tokens2[1+(s<<1)]);a+='',a+='",a+='",a+='",a+='",a+='",a+="",a+='
    ',n'+r.escape(t.tokens1[n].type)+""),this._domNode.innerHTML=a, +this._editor.layoutContentWidget(this)},t.prototype._decodeMetadata=function(e){var t=c.TokenizationRegistry.getColorMap(),n=c.TokenMetadata.getLanguageId(e),i=c.TokenMetadata.getTokenType(e),o=c.TokenMetadata.getFontStyle(e),r=c.TokenMetadata.getForeground(e),s=c.TokenMetadata.getBackground(e);return{languageIdentifier:this._modeService.getLanguageIdentifier(n),tokenType:i,fontStyle:o,foreground:t[r],background:t[s]}},t.prototype._tokenTypeToString=function(e){switch(e){case 0:return"Other";case 1:return"Comment";case 2:return"String";case 4:return"RegEx"}return"??"},t.prototype._fontStyleToString=function(e){var t="";return 1&e&&(t+="italic "),2&e&&(t+="bold "),4&e&&(t+="underline "),0===t.length&&(t="---"),t},t.prototype._getTokensAtLine=function(e){var t=this._getStateBeforeLine(e),n=this._tokenizationSupport.tokenize(this._model.getLineContent(e),t,0),i=this._tokenizationSupport.tokenize2(this._model.getLineContent(e),t,0);return{startState:t,tokens1:n.tokens,tokens2:i.tokens,endState:n.endState}}, +t.prototype._getStateBeforeLine=function(e){for(var t=this._tokenizationSupport.getInitialState(),n=1;n1?n.localize(0,null,t.lineNumber,t.column):n.localize(1,null,t.lineNumber,t.column):t.lineNumber<1||t.lineNumber>o.getLineCount()?n.localize(2,null,o.getLineCount()):n.localize(3,null,o.getLineMaxColumn(t.lineNumber)),{position:t,isValid:s,label:r}}, +t.prototype.getLabel=function(){return this._parseResult.label},t.prototype.getAriaLabel=function(){return n.localize(4,null,this._parseResult.label)},t.prototype.run=function(e,t){return e===r.Mode.OPEN?this.runOpen():this.runPreview()},t.prototype.runOpen=function(){if(!this._parseResult.isValid)return!1;var e=this.toSelection();return this.editor.setSelection(e),this.editor.revealRangeInCenter(e,0),this.editor.focus(),!0},t.prototype.runPreview=function(){if(!this._parseResult.isValid)return this.decorator.clearDecorations(),!1;var e=this.toSelection();return this.editor.revealRangeInCenter(e,0),this.decorator.decorateLine(e,this.editor),!1},t.prototype.toSelection=function(){return new c.Range(this._parseResult.position.lineNumber,this._parseResult.position.column,this._parseResult.position.lineNumber,this._parseResult.position.column)},t}(i.QuickOpenEntry);t.GotoLineEntry=h;var p=function(e){function t(){return e.call(this,n.localize(5,null),{id:"editor.action.gotoLine",label:n.localize(6,null), +alias:"Go to Line...",precondition:null,kbOpts:{kbExpr:s.EditorContextKeys.focus,primary:2085,mac:{primary:293},weight:100}})||this}return o(t,e),t.prototype.run=function(e,t){var n=this;this._show(this.getController(t),{getModel:function(e){return new i.QuickOpenModel([new h(e,t,n.getController(t))])},getAutoFocus:function(e){return{autoFocusFirstEntry:e.length>0}}})},t}(l.BaseEditorQuickOpenAction);t.GotoLineAction=p,u.registerEditorAction(p)}),define(t[538],n([1,0,347,10,102,13,119,93,49,20,145,11,30]),function(e,t,n,i,r,s,a,l,u,d,c,h,p){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var f=function(e){function t(t,n,i,o){var r=e.call(this)||this;return r.key=t,r.setHighlights(n),r.action=i,r.editor=o,r}return o(t,e),t.prototype.getLabel=function(){return this.action.label},t.prototype.getAriaLabel=function(){return n.localize(0,null,this.getLabel())},t.prototype.getGroupLabel=function(){return this.key},t.prototype.run=function(e,t){var n=this +;return e===l.Mode.OPEN&&(s.TPromise.timeout(50).done(function(){n.editor.focus();try{(n.action.run()||s.TPromise.as(null)).done(null,i.onUnexpectedError)}catch(e){i.onUnexpectedError(e)}},i.onUnexpectedError),!0)},t}(a.QuickOpenEntryGroup);t.EditorActionCommandEntry=f;var g=function(e){function t(){return e.call(this,n.localize(1,null),{id:"editor.action.quickCommand",label:n.localize(2,null),alias:"Command Palette",precondition:null,kbOpts:{kbExpr:d.EditorContextKeys.focus,primary:p.isIE?571:59,weight:100},menuOpts:{group:"z_commands",order:1}})||this}return o(t,e),t.prototype.run=function(e,t){var n=this,i=e.get(u.IKeybindingService);this._show(this.getController(t),{getModel:function(e){return new a.QuickOpenModel(n._editorActionsToEntries(i,t,e))},getAutoFocus:function(e){return{autoFocusFirstEntry:!0,autoFocusPrefixMatch:e}}})},t.prototype._sort=function(e,t){var n=e.getLabel().toLowerCase(),i=t.getLabel().toLowerCase();return n.localeCompare(i)},t.prototype._editorActionsToEntries=function(e,t,n){ +for(var i=t.getSupportedActions(),o=[],s=0;s0&&0===o.indexOf(":")){ +for(var f=null,g=null,m=0,v=0;v0)):m++}g&&g.setGroupLabel(this.typeToLabel(f,m))}else a.length>0&&a[0].setGroupLabel(n.localize(3,null,a.length));return a},t.prototype.typeToLabel=function(e,t){switch(e){case"module":return n.localize(4,null,t);case"class":return n.localize(5,null,t);case"interface":return n.localize(6,null,t);case"method":return n.localize(7,null,t);case"function":return n.localize(8,null,t);case"property":return n.localize(9,null,t);case"variable":return n.localize(10,null,t);case"var":return n.localize(11,null,t);case"constructor":return n.localize(12,null,t);case"call":return n.localize(13,null,t)}return e},t.prototype.sortNormal=function(e,t,n){var i=t.getLabel().toLowerCase(),o=n.getLabel().toLowerCase(),r=i.localeCompare(o);if(0!==r)return r;var s=t.getRange(),a=n.getRange();return s.startLineNumber-a.startLineNumber},t.prototype.sortScoped=function(e,t,n){ +e=e.substr(":".length);var i=t.getType(),o=n.getType(),r=i.localeCompare(o);if(0!==r)return r;if(e){var s=t.getLabel().toLowerCase(),a=n.getLabel().toLowerCase(),l=s.localeCompare(a);if(0!==l)return l}var u=t.getRange(),d=n.getRange();return u.startLineNumber-d.startLineNumber},t}(d.BaseEditorQuickOpenAction);t.QuickOutlineAction=g,h.registerEditorAction(g)}),define(t[540],n([1,0,13,484,7,61]),function(e,t,n,i,r,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o(t,e),t.prototype.getActiveCodeEditor=function(){return null},t.prototype.openCodeEditor=function(e,t,i){return t?n.TPromise.as(this.doOpenEditor(t,e)):n.TPromise.as(null)},t.prototype.doOpenEditor=function(e,t){if(!this.findModel(e,t.resource)){if(t.resource){var n=t.resource.scheme;if(n===s.Schemas.http||n===s.Schemas.https)return r.windowOpenNoOpener(t.resource.toString()),e}return null}var i=t.options.selection +;if(i)if("number"==typeof i.endLineNumber&&"number"==typeof i.endColumn)e.setSelection(i),e.revealRangeInCenter(i,1);else{var o={lineNumber:i.startLineNumber,column:i.startColumn};e.setPosition(o),e.revealPositionInCenter(o,1)}return e},t.prototype.findModel=function(e,t){var n=e.getModel();return n.uri.toString()!==t.toString()?null:n},t}(i.CodeEditorServiceImpl);t.StandaloneCodeEditorServiceImpl=a}),define(t[541],n([1,0,22,35]),function(e,t,n,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o,r,s;t.vs={base:"vs",inherit:!1,rules:[{token:"",foreground:"000000",background:"fffffe"},{token:"invalid",foreground:"cd3131"},{token:"emphasis",fontStyle:"italic"},{token:"strong",fontStyle:"bold"},{token:"variable",foreground:"001188"},{token:"variable.predefined",foreground:"4864AA"},{token:"constant",foreground:"dd0000"},{token:"comment",foreground:"008000"},{token:"number",foreground:"09885A"},{token:"number.hex",foreground:"3030c0"},{token:"regexp",foreground:"800000"},{token:"annotation", +foreground:"808080"},{token:"type",foreground:"008080"},{token:"delimiter",foreground:"000000"},{token:"delimiter.html",foreground:"383838"},{token:"delimiter.xml",foreground:"0000FF"},{token:"tag",foreground:"800000"},{token:"tag.id.pug",foreground:"4F76AC"},{token:"tag.class.pug",foreground:"4F76AC"},{token:"meta.scss",foreground:"800000"},{token:"metatag",foreground:"e00000"},{token:"metatag.content.html",foreground:"FF0000"},{token:"metatag.html",foreground:"808080"},{token:"metatag.xml",foreground:"808080"},{token:"metatag.php",fontStyle:"bold"},{token:"key",foreground:"863B00"},{token:"string.key.json",foreground:"A31515"},{token:"string.value.json",foreground:"0451A5"},{token:"attribute.name",foreground:"FF0000"},{token:"attribute.value",foreground:"0451A5"},{token:"attribute.value.number",foreground:"09885A"},{token:"attribute.value.unit",foreground:"09885A"},{token:"attribute.value.html",foreground:"0000FF"},{token:"attribute.value.xml",foreground:"0000FF"},{token:"string",foreground:"A31515"},{ +token:"string.html",foreground:"0000FF"},{token:"string.sql",foreground:"FF0000"},{token:"string.yaml",foreground:"0451A5"},{token:"keyword",foreground:"0000FF"},{token:"keyword.json",foreground:"0451A5"},{token:"keyword.flow",foreground:"AF00DB"},{token:"keyword.flow.scss",foreground:"0000FF"},{token:"operator.scss",foreground:"666666"},{token:"operator.sql",foreground:"778899"},{token:"operator.swift",foreground:"666666"},{token:"predefined.sql",foreground:"FF00FF"}],colors:(o={},o[n.editorBackground]="#FFFFFE",o[n.editorForeground]="#000000",o[n.editorInactiveSelection]="#E5EBF1",o[i.editorIndentGuides]="#D3D3D3",o[i.editorActiveIndentGuides]="#939393",o[n.editorSelectionHighlight]="#ADD6FF4D",o)},t.vs_dark={base:"vs-dark",inherit:!1,rules:[{token:"",foreground:"D4D4D4",background:"1E1E1E"},{token:"invalid",foreground:"f44747"},{token:"emphasis",fontStyle:"italic"},{token:"strong",fontStyle:"bold"},{token:"variable",foreground:"74B0DF"},{token:"variable.predefined",foreground:"4864AA"},{ +token:"variable.parameter",foreground:"9CDCFE"},{token:"constant",foreground:"569CD6"},{token:"comment",foreground:"608B4E"},{token:"number",foreground:"B5CEA8"},{token:"number.hex",foreground:"5BB498"},{token:"regexp",foreground:"B46695"},{token:"annotation",foreground:"cc6666"},{token:"type",foreground:"3DC9B0"},{token:"delimiter",foreground:"DCDCDC"},{token:"delimiter.html",foreground:"808080"},{token:"delimiter.xml",foreground:"808080"},{token:"tag",foreground:"569CD6"},{token:"tag.id.pug",foreground:"4F76AC"},{token:"tag.class.pug",foreground:"4F76AC"},{token:"meta.scss",foreground:"A79873"},{token:"meta.tag",foreground:"CE9178"},{token:"metatag",foreground:"DD6A6F"},{token:"metatag.content.html",foreground:"9CDCFE"},{token:"metatag.html",foreground:"569CD6"},{token:"metatag.xml",foreground:"569CD6"},{token:"metatag.php",fontStyle:"bold"},{token:"key",foreground:"9CDCFE"},{token:"string.key.json",foreground:"9CDCFE"},{token:"string.value.json",foreground:"CE9178"},{token:"attribute.name", +foreground:"9CDCFE"},{token:"attribute.value",foreground:"CE9178"},{token:"attribute.value.number.css",foreground:"B5CEA8"},{token:"attribute.value.unit.css",foreground:"B5CEA8"},{token:"attribute.value.hex.css",foreground:"D4D4D4"},{token:"string",foreground:"CE9178"},{token:"string.sql",foreground:"FF0000"},{token:"keyword",foreground:"569CD6"},{token:"keyword.flow",foreground:"C586C0"},{token:"keyword.json",foreground:"CE9178"},{token:"keyword.flow.scss",foreground:"569CD6"},{token:"operator.scss",foreground:"909090"},{token:"operator.sql",foreground:"778899"},{token:"operator.swift",foreground:"909090"},{token:"predefined.sql",foreground:"FF00FF"}],colors:(r={},r[n.editorBackground]="#1E1E1E",r[n.editorForeground]="#D4D4D4",r[n.editorInactiveSelection]="#3A3D41",r[i.editorIndentGuides]="#404040",r[i.editorActiveIndentGuides]="#707070",r[n.editorSelectionHighlight]="#ADD6FF26",r)},t.hc_black={base:"hc-black",inherit:!1,rules:[{token:"",foreground:"FFFFFF",background:"000000"},{token:"invalid", +foreground:"f44747"},{token:"emphasis",fontStyle:"italic"},{token:"strong",fontStyle:"bold"},{token:"variable",foreground:"1AEBFF"},{token:"variable.parameter",foreground:"9CDCFE"},{token:"constant",foreground:"569CD6"},{token:"comment",foreground:"608B4E"},{token:"number",foreground:"FFFFFF"},{token:"regexp",foreground:"C0C0C0"},{token:"annotation",foreground:"569CD6"},{token:"type",foreground:"3DC9B0"},{token:"delimiter",foreground:"FFFF00"},{token:"delimiter.html",foreground:"FFFF00"},{token:"tag",foreground:"569CD6"},{token:"tag.id.pug",foreground:"4F76AC"},{token:"tag.class.pug",foreground:"4F76AC"},{token:"meta",foreground:"D4D4D4"},{token:"meta.tag",foreground:"CE9178"},{token:"metatag",foreground:"569CD6"},{token:"metatag.content.html",foreground:"1AEBFF"},{token:"metatag.html",foreground:"569CD6"},{token:"metatag.xml",foreground:"569CD6"},{token:"metatag.php",fontStyle:"bold"},{token:"key",foreground:"9CDCFE"},{token:"string.key",foreground:"9CDCFE"},{token:"string.value",foreground:"CE9178"},{ +token:"attribute.name",foreground:"569CD6"},{token:"attribute.value",foreground:"3FF23F"},{token:"string",foreground:"CE9178"},{token:"string.sql",foreground:"FF0000"},{token:"keyword",foreground:"569CD6"},{token:"keyword.flow",foreground:"C586C0"},{token:"operator.sql",foreground:"778899"},{token:"operator.swift",foreground:"909090"},{token:"predefined.sql",foreground:"FF00FF"}],colors:(s={},s[n.editorBackground]="#000000",s[n.editorForeground]="#FFFFFF",s[i.editorIndentGuides]="#FFFFFF",s[i.editorActiveIndentGuides]="#FFFFFF",s)}}),define(t[542],n([1,0,204,541,7,17,27,22,16,45,9]),function(e,t,n,i,o,r,s,a,l,u,d){"use strict";function c(e){return e===f||e===g||e===m}function h(e){switch(e){case f:return i.vs;case g:return i.vs_dark;case m:return i.hc_black}}function p(e){var t=h(e);return new y(e,t)}Object.defineProperty(t,"__esModule",{value:!0});var f="vs",g="vs-dark",m="hc-black",v=u.Registry.as(a.Extensions.ColorContribution),_=u.Registry.as(l.Extensions.ThemingContribution),y=function(){function e(e,t){ +this.themeData=t;var n=t.base;e.length>0?(this.id=n+" "+e,this.themeName=e):(this.id=n,this.themeName=n),this.colors=null,this.defaultColors=Object.create(null),this._tokenTheme=null}return Object.defineProperty(e.prototype,"base",{get:function(){return this.themeData.base},enumerable:!0,configurable:!0}),e.prototype.notifyBaseUpdated=function(){this.themeData.inherit&&(this.colors=null,this._tokenTheme=null)},e.prototype.getColors=function(){if(!this.colors){var e=Object.create(null);for(var t in this.themeData.colors)e[t]=s.Color.fromHex(this.themeData.colors[t]);if(this.themeData.inherit){var n=h(this.themeData.base);for(var t in n.colors)e[t]||(e[t]=s.Color.fromHex(n.colors[t]))}this.colors=e}return this.colors},e.prototype.getColor=function(e,t){var n=this.getColors()[e];return n||(!1!==t?this.getDefault(e):null)},e.prototype.getDefault=function(e){var t=this.defaultColors[e];return t||(t=v.resolveDefaultColor(e,this),this.defaultColors[e]=t,t)},e.prototype.defines=function(e){ +return Object.prototype.hasOwnProperty.call(this.getColors(),e)},Object.defineProperty(e.prototype,"type",{get:function(){switch(this.base){case f:return"light";case m:return"hc";default:return"dark"}},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"tokenTheme",{get:function(){if(!this._tokenTheme){var e=[],t=[];if(this.themeData.inherit){var i=h(this.themeData.base);e=i.rules,i.encodedTokensColors&&(t=i.encodedTokensColors)}e=e.concat(this.themeData.rules),this.themeData.encodedTokensColors&&(t=this.themeData.encodedTokensColors),this._tokenTheme=n.TokenTheme.createFromRawTokenTheme(e,t)}return this._tokenTheme},enumerable:!0,configurable:!0}),e}(),C=function(){function e(){this.environment=Object.create(null),this._onThemeChange=new d.Emitter,this._knownThemes=new Map,this._knownThemes.set(f,p(f)),this._knownThemes.set(g,p(g)),this._knownThemes.set(m,p(m)),this._styleElement=o.createStyleSheet(),this._styleElement.className="monaco-colors",this.setTheme(f)} +return Object.defineProperty(e.prototype,"onThemeChange",{get:function(){return this._onThemeChange.event},enumerable:!0,configurable:!0}),e.prototype.defineTheme=function(e,t){if(!/^[a-z0-9\-]+$/i.test(e))throw new Error("Illegal theme name!");if(!c(t.base)&&!c(e))throw new Error("Illegal theme base!");this._knownThemes.set(e,new y(e,t)),c(e)&&this._knownThemes.forEach(function(t){t.base===e&&t.notifyBaseUpdated()}),this._theme&&this._theme.themeName===e&&this.setTheme(e)},e.prototype.getTheme=function(){return this._theme},e.prototype.setTheme=function(e){var t,i=this;t=this._knownThemes.has(e)?this._knownThemes.get(e):this._knownThemes.get(f),this._theme=t;var o=[],s={},a={addRule:function(e){s[e]||(o.push(e),s[e]=!0)}};_.getThemingParticipants().forEach(function(e){return e(t,a,i.environment)});var l=t.tokenTheme.getColorMap();return a.addRule(n.generateTokensCSSForColorMap(l)),this._styleElement.innerHTML=o.join("\n"),r.TokenizationRegistry.setColorMap(l),this._onThemeChange.fire(t),t.id},e}() +;t.StandaloneThemeServiceImpl=C}),define(t[146],n([1,0,15,2,19,155,103,16,51,354,45,82,81,33,7,43]),function(e,t,n,i,r,s,d,c,h,p,f,g,m,v,_,y){"use strict";function C(e){return"alt"===e.getValue(t.multiSelectModifierSettingKey)}function b(e){return"doubleClick"!==e.getValue(t.openModeSettingKey)}function S(e,t){return e.controller||(e.controller=t.createInstance(I,{})),e.styler||(e.styler=new m.DefaultTreestyler((x||(x=_.createStyleSheet()),x))),e}Object.defineProperty(t,"__esModule",{value:!0});var w;t.IListService=n.createDecorator("listService");var E=function(){function e(e){this.lists=[],this._lastFocusedWidget=void 0}return Object.defineProperty(e.prototype,"lastFocusedList",{get:function(){return this._lastFocusedWidget},enumerable:!0,configurable:!0}),e.prototype.register=function(e,t){var n=this;if(this.lists.some(function(t){return t.widget===e}))throw new Error("Cannot register the same widget multiple times");var o={widget:e,extraContextKeys:t};this.lists.push(o), +e.isDOMFocused()&&(this._lastFocusedWidget=e);return i.combinedDisposable([e.onDidFocus(function(){return n._lastFocusedWidget=e}),i.toDisposable(function(){return n.lists.splice(n.lists.indexOf(o),1)}),e.onDidDispose(function(){n.lists=n.lists.filter(function(e){return e!==o}),n._lastFocusedWidget===e&&(n._lastFocusedWidget=void 0)})])},e=a([u(0,r.IContextKeyService)],e)}();t.ListService=E;var L=new r.RawContextKey("listFocus",!0);t.WorkbenchListSupportsMultiSelectContextKey=new r.RawContextKey("listSupportsMultiselect",!0),t.WorkbenchListHasSelectionOrFocus=new r.RawContextKey("listHasSelectionOrFocus",!1),t.WorkbenchListDoubleSelection=new r.RawContextKey("listDoubleSelection",!1),t.WorkbenchListMultiSelection=new r.RawContextKey("listMultiSelection",!1),t.multiSelectModifierSettingKey="workbench.list.multiSelectModifier",t.openModeSettingKey="workbench.list.openMode",t.horizontalScrollingKey="workbench.tree.horizontalScrolling";var x,N=function(e){function s(n,i,o,r,s,a,u,c){ +var h=this,p=S(i,u),f=c.getValue(t.horizontalScrollingKey)?y.ScrollbarVisibility.Auto:y.ScrollbarVisibility.Hidden,g=l({horizontalScrollMode:f,keyboardSupport:!1},d.computeStyles(a.getTheme(),d.defaultListStyles),o);return h=e.call(this,n,p,g)||this,h.disposables=[],h.contextKeyService=function(e,t){var n=e.createScoped(t.getHTMLElement());return L.bindTo(n),n}(r,h),t.WorkbenchListSupportsMultiSelectContextKey.bindTo(h.contextKeyService),h.listHasSelectionOrFocus=t.WorkbenchListHasSelectionOrFocus.bindTo(h.contextKeyService),h.listDoubleSelection=t.WorkbenchListDoubleSelection.bindTo(h.contextKeyService),h.listMultiSelection=t.WorkbenchListMultiSelection.bindTo(h.contextKeyService),h._openOnSingleClick=b(c),h._useAltAsMultipleSelectionModifier=C(c),h.disposables.push(h.contextKeyService,s.register(h),d.attachListStyler(h,a)),h.disposables.push(h.onDidChangeSelection(function(){var e=h.getSelection(),t=h.getFocus();h.listHasSelectionOrFocus.set(e&&e.length>0||!!t),h.listDoubleSelection.set(e&&2===e.length), +h.listMultiSelection.set(e&&e.length>1)})),h.disposables.push(h.onDidChangeFocus(function(){var e=h.getSelection(),t=h.getFocus();h.listHasSelectionOrFocus.set(e&&e.length>0||!!t)})),h.disposables.push(c.onDidChangeConfiguration(function(e){e.affectsConfiguration(t.openModeSettingKey)&&(h._openOnSingleClick=b(c)),e.affectsConfiguration(t.multiSelectModifierSettingKey)&&(h._useAltAsMultipleSelectionModifier=C(c))})),h}return o(s,e),s.prototype.dispose=function(){e.prototype.dispose.call(this),this.disposables=i.dispose(this.disposables)},s=a([u(3,r.IContextKeyService),u(4,t.IListService),u(5,c.IThemeService),u(6,n.IInstantiationService),u(7,h.IConfigurationService)],s)}(s.Tree);t.WorkbenchTree=N;var I=function(e){function n(t,n){var i=e.call(this,function(e){return"boolean"!=typeof e.keyboardSupport&&(e.keyboardSupport=!1),"number"!=typeof e.clickBehavior&&(e.clickBehavior=m.ClickBehavior.ON_MOUSE_DOWN),e}(t))||this;return i.configurationService=n,i.disposables=[], +v.isUndefinedOrNull(t.openMode)&&(i.setOpenMode(i.getOpenModeSetting()),i.registerListeners()),i}return o(n,e),n.prototype.registerListeners=function(){var e=this;this.disposables.push(this.configurationService.onDidChangeConfiguration(function(n){n.affectsConfiguration(t.openModeSettingKey)&&e.setOpenMode(e.getOpenModeSetting())}))},n.prototype.getOpenModeSetting=function(){return b(this.configurationService)?m.OpenMode.SINGLE_CLICK:m.OpenMode.DOUBLE_CLICK},n.prototype.dispose=function(){this.disposables=i.dispose(this.disposables)},n=a([u(1,h.IConfigurationService)],n)}(m.DefaultController);t.WorkbenchTreeController=I;f.Registry.as(g.Extensions.Configuration).registerConfiguration({id:"workbench",order:7,title:p.localize(0,null),type:"object",properties:(w={},w[t.multiSelectModifierSettingKey]={type:"string",enum:["ctrlCmd","alt"],enumDescriptions:[p.localize(1,null),p.localize(2,null)],default:"ctrlCmd",description:p.localize(3,null)},w[t.openModeSettingKey]={type:"string", +enum:["singleClick","doubleClick"],default:"singleClick",description:p.localize(4,null)},w[t.horizontalScrollingKey]={type:"boolean",default:!1,description:p.localize(5,null)},w)})}),define(t[195],n([1,0,15]),function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.IUriDisplayService=n.createDecorator("uriDisplay")}),define(t[545],n([1,0,19]),function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.bindContextScopedWidget=function(e,t,i){new n.RawContextKey(i,t).bindTo(e)},t.createWidgetScopedContextKeyService=function(e,t){return e.createScoped(t.target)},t.getContextScopedWidget=function(e,t){return e.getContext(document.activeElement).getValue(t)}}),define(t[546],n([1,0,19,115,276,545,97]),function(e,t,n,i,r,s,l){"use strict";function d(e,i){var o=s.createWidgetScopedContextKeyService(e,i);s.bindContextScopedWidget(o,i,t.HistoryNavigationWidgetContext);return{scopedContextKeyService:o, +historyNavigationEnablement:new n.RawContextKey(t.HistoryNavigationEnablementContext,!0).bindTo(o)}}Object.defineProperty(t,"__esModule",{value:!0}),t.HistoryNavigationWidgetContext="historyNavigationWidget",t.HistoryNavigationEnablementContext="historyNavigationEnabled",t.createAndBindHistoryNavigationWidgetScopedContextKeyService=d;var c=function(e){function t(t,n,i,o){var r=e.call(this,t,n,i)||this;return r._register(d(o,{target:r.element,historyNavigator:r}).scopedContextKeyService),r}return o(t,e),t=a([u(3,n.IContextKeyService)],t)}(i.HistoryInputBox);t.ContextScopedHistoryInputBox=c;var h=function(e){function t(t,n,i,o){var r=e.call(this,t,n,i)||this;return r._register(d(o,{target:r.inputBox.element,historyNavigator:r.inputBox}).scopedContextKeyService),r}return o(t,e),t=a([u(3,n.IContextKeyService)],t)}(r.FindInput);t.ContextScopedFindInput=h,l.KeybindingsRegistry.registerCommandAndKeybindingRule({id:"history.showPrevious",weight:200, +when:n.ContextKeyExpr.and(new n.ContextKeyDefinedExpr(t.HistoryNavigationWidgetContext),new n.ContextKeyEqualsExpr(t.HistoryNavigationEnablementContext,!0)),primary:16,secondary:[528],handler:function(e,i){s.getContextScopedWidget(e.get(n.IContextKeyService),t.HistoryNavigationWidgetContext).historyNavigator.showPreviousValue()}}),l.KeybindingsRegistry.registerCommandAndKeybindingRule({id:"history.showNext",weight:200,when:new n.ContextKeyAndExpr([new n.ContextKeyDefinedExpr(t.HistoryNavigationWidgetContext),new n.ContextKeyEqualsExpr(t.HistoryNavigationEnablementContext,!0)]),primary:18,secondary:[530],handler:function(e,i){s.getContextScopedWidget(e.get(n.IContextKeyService),t.HistoryNavigationWidgetContext).historyNavigator.showNextValue()}})}),define(t[547],n([1,0,312,10,18,6,14,7,46,90,23,142,3,16,22,546,373]),function(e,t,n,i,r,s,a,l,u,d,c,h,p,f,g,m){"use strict";Object.defineProperty(t,"__esModule",{value:!0}) +;var v=n.localize(0,null),_=n.localize(1,null),y=n.localize(2,null),C=n.localize(3,null),b=n.localize(4,null),S=n.localize(5,null),w=n.localize(6,null),E=n.localize(7,null),L=n.localize(8,null),x=n.localize(9,null),N=n.localize(10,null),I=n.localize(11,null,h.MATCHES_LIMIT),M=n.localize(12,null),D=n.localize(13,null),T=69,k=17+(T+3+1)+92+2,R=34,O=function(){return function(e){this.afterLineNumber=e,this.heightInPx=R,this.suppressMouseDown=!1,this.domNode=document.createElement("div"),this.domNode.className="dock-find-viewzone"}}();t.FindWidgetViewZone=O;var P=function(e){function t(t,n,i,o,r,s,u){var d=e.call(this)||this;return d._codeEditor=t,d._controller=n,d._state=i,d._contextViewProvider=o,d._keybindingService=r,d._contextKeyService=s,d._isVisible=!1,d._isReplaceVisible=!1,d._updateHistoryDelayer=new a.Delayer(500),d._register(d._state.onFindReplaceStateChange(function(e){return d._onStateChanged(e)})),d._buildDomNode(),d._updateButtons(),d._tryUpdateWidgetWidth(), +d._register(d._codeEditor.onDidChangeConfiguration(function(e){e.readOnly&&(d._codeEditor.getConfiguration().readOnly&&d._state.change({isReplaceRevealed:!1},!1),d._updateButtons()),e.layoutInfo&&d._tryUpdateWidgetWidth()})),d._register(d._codeEditor.onDidChangeCursorSelection(function(){d._isVisible&&d._updateToggleSelectionFindButton()})),d._register(d._codeEditor.onDidFocusEditorWidget(function(){if(d._isVisible){var e=d._controller.getGlobalBufferTerm();e&&e!==d._state.searchString&&(d._state.change({searchString:e},!0),d._findInput.select())}})),d._findInputFocused=h.CONTEXT_FIND_INPUT_FOCUSED.bindTo(s),d._findFocusTracker=d._register(l.trackFocus(d._findInput.inputBox.inputElement)),d._register(d._findFocusTracker.onDidFocus(function(){d._findInputFocused.set(!0),d._updateSearchScope()})),d._register(d._findFocusTracker.onDidBlur(function(){d._findInputFocused.set(!1)})),d._replaceInputFocused=h.CONTEXT_REPLACE_INPUT_FOCUSED.bindTo(s), +d._replaceFocusTracker=d._register(l.trackFocus(d._replaceInputBox.inputElement)),d._register(d._replaceFocusTracker.onDidFocus(function(){d._replaceInputFocused.set(!0),d._updateSearchScope()})),d._register(d._replaceFocusTracker.onDidBlur(function(){d._replaceInputFocused.set(!1)})),d._codeEditor.addOverlayWidget(d),d._viewZone=new O(0),d._applyTheme(u.getTheme()),d._register(u.onThemeChange(d._applyTheme.bind(d))),d._register(d._codeEditor.onDidChangeModel(function(e){d._isVisible&&void 0!==d._viewZoneId&&d._codeEditor.changeViewZones(function(e){e.removeZone(d._viewZoneId),d._viewZoneId=void 0})})),d._register(d._codeEditor.onDidScrollChange(function(e){e.scrollTopChanged?d._layoutViewZone():setTimeout(function(){d._layoutViewZone()},0)})),d}return o(t,e),t.prototype.getId=function(){return t.ID},t.prototype.getDomNode=function(){return this._domNode},t.prototype.getPosition=function(){return this._isVisible?{preference:c.OverlayWidgetPositionPreference.TOP_RIGHT_CORNER}:null}, +t.prototype._onStateChanged=function(e){if(e.searchString&&(this._findInput.setValue(this._state.searchString),this._updateButtons()),e.replaceString&&(this._replaceInputBox.value=this._state.replaceString),e.isRevealed&&(this._state.isRevealed?this._reveal(!0):this._hide(!0)),e.isReplaceRevealed&&(this._state.isReplaceRevealed?this._codeEditor.getConfiguration().readOnly||this._isReplaceVisible||(this._isReplaceVisible=!0,this._replaceInputBox.width=this._findInput.inputBox.width,this._updateButtons()):this._isReplaceVisible&&(this._isReplaceVisible=!1,this._updateButtons())),e.isRegex&&this._findInput.setRegex(this._state.isRegex),e.wholeWord&&this._findInput.setWholeWords(this._state.wholeWord),e.matchCase&&this._findInput.setCaseSensitive(this._state.matchCase),e.searchScope&&(this._state.searchScope?this._toggleSelectionFind.checked=!0:this._toggleSelectionFind.checked=!1,this._updateToggleSelectionFindButton()),e.searchString||e.matchesCount||e.matchesPosition){ +var t=this._state.searchString.length>0&&0===this._state.matchesCount;l.toggleClass(this._domNode,"no-results",t),this._updateMatchesCount()}(e.searchString||e.currentMatch)&&this._layoutViewZone(),e.updateHistory&&this._delayedUpdateHistory()},t.prototype._delayedUpdateHistory=function(){this._updateHistoryDelayer.trigger(this._updateHistory.bind(this))},t.prototype._updateHistory=function(){this._state.searchString&&this._findInput.inputBox.addToHistory(),this._state.replaceString&&this._replaceInputBox.addToHistory()},t.prototype._updateMatchesCount=function(){this._matchesCount.style.minWidth=T+"px",this._state.matchesCount>=h.MATCHES_LIMIT?this._matchesCount.title=I:this._matchesCount.title="",this._matchesCount.firstChild&&this._matchesCount.removeChild(this._matchesCount.firstChild);var e;if(this._state.matchesCount>0){var t=String(this._state.matchesCount);this._state.matchesCount>=h.MATCHES_LIMIT&&(t+="+");var n=String(this._state.matchesPosition);"0"===n&&(n="?"),e=s.format(M,n,t)}else e=D +;this._matchesCount.appendChild(document.createTextNode(e)),T=Math.max(T,this._matchesCount.clientWidth)},t.prototype._updateToggleSelectionFindButton=function(){var e=this._codeEditor.getSelection(),t=!!e&&(e.startLineNumber!==e.endLineNumber||e.startColumn!==e.endColumn),n=this._toggleSelectionFind.checked;this._toggleSelectionFind.setEnabled(this._isVisible&&(n||t))},t.prototype._updateButtons=function(){this._findInput.setEnabled(this._isVisible),this._replaceInputBox.setEnabled(this._isVisible&&this._isReplaceVisible),this._updateToggleSelectionFindButton(),this._closeBtn.setEnabled(this._isVisible);var e=this._state.searchString.length>0;this._prevBtn.setEnabled(this._isVisible&&e),this._nextBtn.setEnabled(this._isVisible&&e),this._replaceBtn.setEnabled(this._isVisible&&this._isReplaceVisible&&e),this._replaceAllBtn.setEnabled(this._isVisible&&this._isReplaceVisible&&e),l.toggleClass(this._domNode,"replaceToggled",this._isReplaceVisible), +this._toggleReplaceBtn.toggleClass("collapse",!this._isReplaceVisible),this._toggleReplaceBtn.toggleClass("expand",this._isReplaceVisible),this._toggleReplaceBtn.setExpanded(this._isReplaceVisible);var t=!this._codeEditor.getConfiguration().readOnly;this._toggleReplaceBtn.setEnabled(this._isVisible&&t)},t.prototype._reveal=function(e){var t=this;if(!this._isVisible){this._isVisible=!0;var n=this._codeEditor.getSelection();!!n&&(n.startLineNumber!==n.endLineNumber||n.startColumn!==n.endColumn)&&this._codeEditor.getConfiguration().contribInfo.find.autoFindInSelection?this._toggleSelectionFind.checked=!0:this._toggleSelectionFind.checked=!1,this._tryUpdateWidgetWidth(),this._updateButtons(),setTimeout(function(){l.addClass(t._domNode,"visible"),t._domNode.setAttribute("aria-hidden","false")},0),this._codeEditor.layoutOverlayWidget(this);var i=!0;if(this._codeEditor.getConfiguration().contribInfo.find.seedSearchStringFromSelection&&n){ +var o=l.getDomNodePagePosition(this._codeEditor.getDomNode()),r=this._codeEditor.getScrolledVisiblePosition(n.getStartPosition()),s=o.left+r.left;if(r.topn.startLineNumber&&(i=!1);var a=l.getTopLeftOffset(this._domNode).left;s>a&&(i=!1);var u=this._codeEditor.getScrolledVisiblePosition(n.getEndPosition());o.left+u.left>a&&(i=!1)}}this._showViewZone(i)}},t.prototype._hide=function(e){var t=this;this._isVisible&&(this._isVisible=!1,this._updateButtons(),l.removeClass(this._domNode,"visible"),this._domNode.setAttribute("aria-hidden","true"),e&&this._codeEditor.focus(),this._codeEditor.layoutOverlayWidget(this),this._codeEditor.changeViewZones(function(e){void 0!==t._viewZoneId&&(e.removeZone(t._viewZoneId),t._viewZoneId=void 0,t._codeEditor.setScrollTop(t._codeEditor.getScrollTop()-t._viewZone.heightInPx))}))},t.prototype._layoutViewZone=function(){var e=this;this._isVisible&&void 0===this._viewZoneId&&this._codeEditor.changeViewZones(function(t){ +e._state.isReplaceRevealed?e._viewZone.heightInPx=64:e._viewZone.heightInPx=R,e._viewZoneId=t.addZone(e._viewZone),e._codeEditor.setScrollTop(e._codeEditor.getScrollTop()+e._viewZone.heightInPx)})},t.prototype._showViewZone=function(e){var t=this;void 0===e&&(e=!0),this._isVisible&&this._codeEditor.changeViewZones(function(n){var i=R;void 0!==t._viewZoneId?(t._state.isReplaceRevealed?(t._viewZone.heightInPx=64,i=64-R):(t._viewZone.heightInPx=R,i=R-64),n.removeZone(t._viewZoneId)):t._viewZone.heightInPx=R,t._viewZoneId=n.addZone(t._viewZone),e&&t._codeEditor.setScrollTop(t._codeEditor.getScrollTop()+i)})},t.prototype._applyTheme=function(e){var t={inputActiveOptionBorder:e.getColor(g.inputActiveOptionBorder),inputBackground:e.getColor(g.inputBackground),inputForeground:e.getColor(g.inputForeground),inputBorder:e.getColor(g.inputBorder),inputValidationInfoBackground:e.getColor(g.inputValidationInfoBackground),inputValidationInfoBorder:e.getColor(g.inputValidationInfoBorder), +inputValidationWarningBackground:e.getColor(g.inputValidationWarningBackground),inputValidationWarningBorder:e.getColor(g.inputValidationWarningBorder),inputValidationErrorBackground:e.getColor(g.inputValidationErrorBackground),inputValidationErrorBorder:e.getColor(g.inputValidationErrorBorder)};this._findInput.style(t),this._replaceInputBox.style(t)},t.prototype._tryUpdateWidgetWidth=function(){if(this._isVisible){var e=this._codeEditor.getConfiguration().layoutInfo.width,t=this._codeEditor.getConfiguration().layoutInfo.minimapWidth,n=!1,i=!1,o=!1;if(this._resized){if(l.getTotalWidth(this._domNode)>411)return this._domNode.style.maxWidth=e-28-t-15+"px",void(this._replaceInputBox.inputElement.style.width=l.getTotalWidth(this._findInput.inputBox.inputElement)+"px")}if(439+t>=e&&(i=!0),439+t-T>=e&&(o=!0),439+t-T>=e+50&&(n=!0),l.toggleClass(this._domNode,"collapsed-find-widget",n),l.toggleClass(this._domNode,"narrow-find-widget",o),l.toggleClass(this._domNode,"reduced-find-widget",i), +o||n||(this._domNode.style.maxWidth=e-28-t-15+"px"),this._resized){var r=l.getTotalWidth(this._findInput.inputBox.inputElement);r>0&&(this._replaceInputBox.inputElement.style.width=r+"px")}}},t.prototype.focusFindInput=function(){this._findInput.select(),this._findInput.focus()},t.prototype.focusReplaceInput=function(){this._replaceInputBox.select(),this._replaceInputBox.focus()},t.prototype.highlightFindOptions=function(){this._findInput.highlightFindOptions()},t.prototype._updateSearchScope=function(){if(this._toggleSelectionFind.checked){var e=this._codeEditor.getSelection();1===e.endColumn&&e.endLineNumber>e.startLineNumber&&(e=e.setEndPosition(e.endLineNumber-1,1));var t=this._state.currentMatch;e.startLineNumber!==e.endLineNumber&&(p.Range.equalsRange(e,t)||this._state.change({searchScope:e},!0))}},t.prototype._onFindInputMouseDown=function(e){e.middleButton&&e.stopPropagation()},t.prototype._onFindInputKeyDown=function(e){ +return e.equals(3)?(this._codeEditor.getAction(h.FIND_IDS.NextMatchFindAction).run().done(null,i.onUnexpectedError),void e.preventDefault()):e.equals(1027)?(this._codeEditor.getAction(h.FIND_IDS.PreviousMatchFindAction).run().done(null,i.onUnexpectedError),void e.preventDefault()):e.equals(2)?(this._isReplaceVisible?this._replaceInputBox.focus():this._findInput.focusOnCaseSensitive(),void e.preventDefault()):e.equals(2066)?(this._codeEditor.focus(),void e.preventDefault()):void 0},t.prototype._onReplaceInputKeyDown=function(e){return e.equals(3)?(this._controller.replace(),void e.preventDefault()):e.equals(2051)?(this._controller.replaceAll(),void e.preventDefault()):e.equals(2)?(this._findInput.focusOnCaseSensitive(),void e.preventDefault()):e.equals(1026)?(this._findInput.focus(),void e.preventDefault()):e.equals(2066)?(this._codeEditor.focus(),void e.preventDefault()):void 0},t.prototype.getHorizontalSashTop=function(e){return 0},t.prototype.getHorizontalSashLeft=function(e){return 0}, +t.prototype.getHorizontalSashWidth=function(e){return 500},t.prototype._keybindingLabelFor=function(e){var t=this._keybindingService.lookupKeybinding(e);return t?" ("+t.getLabel()+")":""},t.prototype._buildFindPart=function(){var e=this;this._findInput=this._register(new m.ContextScopedFindInput(null,this._contextViewProvider,{width:221,label:v,placeholder:_,appendCaseSensitiveLabel:this._keybindingLabelFor(h.FIND_IDS.ToggleCaseSensitiveCommand),appendWholeWordsLabel:this._keybindingLabelFor(h.FIND_IDS.ToggleWholeWordCommand),appendRegexLabel:this._keybindingLabelFor(h.FIND_IDS.ToggleRegexCommand),validation:function(t){if(0===t.length)return null;if(!e._findInput.getRegex())return null;try{return new RegExp(t),null}catch(e){return{content:e.message}}}},this._contextKeyService)),this._findInput.setRegex(!!this._state.isRegex),this._findInput.setCaseSensitive(!!this._state.matchCase),this._findInput.setWholeWords(!!this._state.wholeWord),this._register(this._findInput.onKeyDown(function(t){ +return e._onFindInputKeyDown(t)})),this._register(this._findInput.inputBox.onDidChange(function(){e._state.change({searchString:e._findInput.getValue()},!0)})),this._register(this._findInput.onDidOptionChange(function(){e._state.change({isRegex:e._findInput.getRegex(),wholeWord:e._findInput.getWholeWords(),matchCase:e._findInput.getCaseSensitive()},!0)})),this._register(this._findInput.onCaseSensitiveKeyDown(function(t){t.equals(1026)&&e._isReplaceVisible&&(e._replaceInputBox.focus(),t.preventDefault())})),r.isLinux&&this._register(this._findInput.onMouseDown(function(t){return e._onFindInputMouseDown(t)})),this._matchesCount=document.createElement("div"),this._matchesCount.className="matchesCount",this._updateMatchesCount(),this._prevBtn=this._register(new F({label:y+this._keybindingLabelFor(h.FIND_IDS.PreviousMatchFindAction),className:"previous",onTrigger:function(){e._codeEditor.getAction(h.FIND_IDS.PreviousMatchFindAction).run().done(null,i.onUnexpectedError)}})),this._nextBtn=this._register(new F({ +label:C+this._keybindingLabelFor(h.FIND_IDS.NextMatchFindAction),className:"next",onTrigger:function(){e._codeEditor.getAction(h.FIND_IDS.NextMatchFindAction).run().done(null,i.onUnexpectedError)}}));var t=document.createElement("div");return t.className="find-part",t.appendChild(this._findInput.domNode),t.appendChild(this._matchesCount),t.appendChild(this._prevBtn.domNode),t.appendChild(this._nextBtn.domNode),this._toggleSelectionFind=this._register(new A({parent:t,title:b+this._keybindingLabelFor(h.FIND_IDS.ToggleSearchScopeCommand),onChange:function(){if(e._toggleSelectionFind.checked){var t=e._codeEditor.getSelection();1===t.endColumn&&t.endLineNumber>t.startLineNumber&&(t=t.setEndPosition(t.endLineNumber-1,1)),t.isEmpty()||e._state.change({searchScope:t},!0)}else e._state.change({searchScope:null},!0)}})),this._closeBtn=this._register(new F({label:S+this._keybindingLabelFor(h.FIND_IDS.CloseFindWidgetCommand),className:"close-fw",onTrigger:function(){e._state.change({isRevealed:!1,searchScope:null},!1)}, +onKeyDown:function(t){t.equals(2)&&e._isReplaceVisible&&(e._replaceBtn.isEnabled()?e._replaceBtn.focus():e._codeEditor.focus(),t.preventDefault())}})),t.appendChild(this._closeBtn.domNode),t},t.prototype._buildReplacePart=function(){var e=this,t=document.createElement("div");t.className="replace-input",t.style.width="221px",this._replaceInputBox=this._register(new m.ContextScopedHistoryInputBox(t,null,{ariaLabel:w,placeholder:E,history:[]},this._contextKeyService)),this._register(l.addStandardDisposableListener(this._replaceInputBox.inputElement,"keydown",function(t){return e._onReplaceInputKeyDown(t)})),this._register(l.addStandardDisposableListener(this._replaceInputBox.inputElement,"input",function(t){e._state.change({replaceString:e._replaceInputBox.value},!1)})),this._replaceBtn=this._register(new F({label:L+this._keybindingLabelFor(h.FIND_IDS.ReplaceOneAction),className:"replace",onTrigger:function(){e._controller.replace()},onKeyDown:function(t){t.equals(1026)&&(e._closeBtn.focus(),t.preventDefault())} +})),this._replaceAllBtn=this._register(new F({label:x+this._keybindingLabelFor(h.FIND_IDS.ReplaceAllAction),className:"replace-all",onTrigger:function(){e._controller.replaceAll()}}));var n=document.createElement("div");return n.className="replace-part",n.appendChild(t),n.appendChild(this._replaceBtn.domNode),n.appendChild(this._replaceAllBtn.domNode),n},t.prototype._buildDomNode=function(){var e=this,t=this._buildFindPart(),n=this._buildReplacePart();this._toggleReplaceBtn=this._register(new F({label:N,className:"toggle left",onTrigger:function(){e._state.change({isReplaceRevealed:!e._isReplaceVisible},!1),e._isReplaceVisible&&(e._replaceInputBox.width=e._findInput.inputBox.width),e._showViewZone()}})),this._toggleReplaceBtn.toggleClass("expand",this._isReplaceVisible),this._toggleReplaceBtn.toggleClass("collapse",!this._isReplaceVisible),this._toggleReplaceBtn.setExpanded(this._isReplaceVisible),this._domNode=document.createElement("div"),this._domNode.className="editor-widget find-widget", +this._domNode.setAttribute("aria-hidden","true"),this._domNode.style.width="411px",this._domNode.appendChild(this._toggleReplaceBtn.domNode),this._domNode.appendChild(t),this._domNode.appendChild(n),this._buildSash()},t.prototype._buildSash=function(){var e=this;this._resizeSash=new d.Sash(this._domNode,this,{orientation:d.Orientation.VERTICAL}),this._resized=!1;var t=411;this._register(this._resizeSash.onDidStart(function(n){t=l.getTotalWidth(e._domNode)})),this._register(this._resizeSash.onDidChange(function(n){e._resized=!0;var i=t+n.startX-n.currentX;if(!(i<411)){var o=i-k;i>(parseFloat(l.getComputedStyle(e._domNode).maxWidth)||0)||(e._domNode.style.width=i+"px",e._isReplaceVisible&&(e._replaceInputBox.width=o))}}))},t.ID="editor.contrib.findWidget",t}(u.Widget);t.FindWidget=P;var A=function(e){function t(n){var i=e.call(this)||this;return i._opts=n,i._domNode=document.createElement("div"),i._domNode.className="monaco-checkbox",i._domNode.title=i._opts.title,i._domNode.tabIndex=0, +i._checkbox=document.createElement("input"),i._checkbox.type="checkbox",i._checkbox.className="checkbox",i._checkbox.id="checkbox-"+t._COUNTER++,i._checkbox.tabIndex=-1,i._label=document.createElement("label"),i._label.className="label",i._label.htmlFor=i._checkbox.id,i._label.tabIndex=-1,i._domNode.appendChild(i._checkbox),i._domNode.appendChild(i._label),i._opts.parent.appendChild(i._domNode),i.onchange(i._checkbox,function(e){i._opts.onChange()}),i}return o(t,e),Object.defineProperty(t.prototype,"domNode",{get:function(){return this._domNode},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"checked",{get:function(){return this._checkbox.checked},set:function(e){this._checkbox.checked=e},enumerable:!0,configurable:!0}),t.prototype.enable=function(){this._checkbox.removeAttribute("disabled")},t.prototype.disable=function(){this._checkbox.disabled=!0},t.prototype.setEnabled=function(e){e?(this.enable(),this.domNode.tabIndex=0):(this.disable(),this.domNode.tabIndex=-1)},t._COUNTER=0,t +}(u.Widget),F=function(e){function t(t){var n=e.call(this)||this;return n._opts=t,n._domNode=document.createElement("div"),n._domNode.title=n._opts.label,n._domNode.tabIndex=0,n._domNode.className="button "+n._opts.className,n._domNode.setAttribute("role","button"),n._domNode.setAttribute("aria-label",n._opts.label),n.onclick(n._domNode,function(e){n._opts.onTrigger(),e.preventDefault()}),n.onkeydown(n._domNode,function(e){if(e.equals(10)||e.equals(3))return n._opts.onTrigger(),void e.preventDefault();n._opts.onKeyDown&&n._opts.onKeyDown(e)}),n}return o(t,e),Object.defineProperty(t.prototype,"domNode",{get:function(){return this._domNode},enumerable:!0,configurable:!0}),t.prototype.isEnabled=function(){return this._domNode.tabIndex>=0},t.prototype.focus=function(){this._domNode.focus()},t.prototype.setEnabled=function(e){l.toggleClass(this._domNode,"disabled",!e),this._domNode.setAttribute("aria-disabled",String(!e)),this._domNode.tabIndex=e?0:-1},t.prototype.setExpanded=function(e){ +this._domNode.setAttribute("aria-expanded",String(!!e))},t.prototype.toggleClass=function(e,t){l.toggleClass(this._domNode,e,t)},t}(u.Widget);t.SimpleButton=F,f.registerThemingParticipant(function(e,t){var n=function(e,n){n&&t.addRule(".monaco-editor "+e+" { background-color: "+n+"; }")};n(".findMatch",e.getColor(g.editorFindMatchHighlight)),n(".currentFindMatch",e.getColor(g.editorFindMatch)),n(".findScope",e.getColor(g.editorFindRangeHighlight));n(".find-widget",e.getColor(g.editorWidgetBackground));var i=e.getColor(g.widgetShadow);i&&t.addRule(".monaco-editor .find-widget { box-shadow: 0 2px 8px "+i+"; }");var o=e.getColor(g.editorFindMatchHighlightBorder);o&&t.addRule(".monaco-editor .findMatch { border: 1px "+("hc"===e.type?"dotted":"solid")+" "+o+"; box-sizing: border-box; }");var r=e.getColor(g.editorFindMatchBorder);r&&t.addRule(".monaco-editor .currentFindMatch { border: 2px solid "+r+"; padding: 1px; box-sizing: border-box; }");var s=e.getColor(g.editorFindRangeHighlightBorder) +;s&&t.addRule(".monaco-editor .findScope { border: 1px "+("hc"===e.type?"dashed":"solid")+" "+s+"; }");var a=e.getColor(g.contrastBorder);a&&t.addRule(".monaco-editor .find-widget { border: 2px solid "+a+"; }");var l=e.getColor(g.errorForeground);l&&t.addRule(".monaco-editor .find-widget.no-results .matchesCount { color: "+l+"; }");var u=e.getColor(g.editorWidgetResizeBorder);if(u)t.addRule(".monaco-editor .find-widget .monaco-sash { background-color: "+u+"; width: 3px !important; margin-left: -4px;}");else{var d=e.getColor(g.editorWidgetBorder);d&&t.addRule(".monaco-editor .find-widget .monaco-sash { background-color: "+d+"; width: 3px !important; margin-left: -4px;}")}})}),define(t[196],n([1,0,311,2,19,6,11,142,243,14,20,72,194,77,49,547,516,16,15,44]),function(e,t,n,i,r,s,l,d,c,h,p,f,g,m,v,_,y,C,b,S){"use strict";function w(e){var t=e.getSelection();if(t.startLineNumber===t.endLineNumber){if(!t.isEmpty())return e.getModel().getValueInRange(t);var n=e.getModel().getWordAtPosition(t.getStartPosition()) +;if(n)return n.word}return null}Object.defineProperty(t,"__esModule",{value:!0}),t.getSelectionSearchString=w;var E=function(e){function t(t,n,i,o){var r=e.call(this)||this;return r._editor=t,r._findWidgetVisible=d.CONTEXT_FIND_WIDGET_VISIBLE.bindTo(n),r._storageService=i,r._clipboardService=o,r._updateHistoryDelayer=new h.Delayer(500),r._state=r._register(new c.FindReplaceState),r.loadQueryState(),r._register(r._state.onFindReplaceStateChange(function(e){return r._onStateChanged(e)})),r._model=null,r._register(r._editor.onDidChangeModel(function(){var e=r._editor.getModel()&&r._state.isRevealed;r.disposeModel(),r._state.change({searchScope:null,matchCase:r._storageService.getBoolean("editor.matchCase",f.StorageScope.WORKSPACE,!1),wholeWord:r._storageService.getBoolean("editor.wholeWord",f.StorageScope.WORKSPACE,!1),isRegex:r._storageService.getBoolean("editor.isRegex",f.StorageScope.WORKSPACE,!1)},!1),e&&r._start({forceRevealReplace:!1,seedSearchStringFromSelection:!1,seedSearchStringFromGlobalClipboard:!1, +shouldFocus:0,shouldAnimate:!1})})),r}return o(t,e),t.get=function(e){return e.getContribution(t.ID)},t.prototype.dispose=function(){this.disposeModel(),e.prototype.dispose.call(this)},t.prototype.disposeModel=function(){this._model&&(this._model.dispose(),this._model=null)},t.prototype.getId=function(){return t.ID},t.prototype._onStateChanged=function(e){this.saveQueryState(e),e.isRevealed&&(this._state.isRevealed?this._findWidgetVisible.set(!0):(this._findWidgetVisible.reset(),this.disposeModel())),e.searchString&&this.setGlobalBufferTerm(this._state.searchString)},t.prototype.saveQueryState=function(e){e.isRegex&&this._storageService.store("editor.isRegex",this._state.actualIsRegex,f.StorageScope.WORKSPACE),e.wholeWord&&this._storageService.store("editor.wholeWord",this._state.actualWholeWord,f.StorageScope.WORKSPACE),e.matchCase&&this._storageService.store("editor.matchCase",this._state.actualMatchCase,f.StorageScope.WORKSPACE)},t.prototype.loadQueryState=function(){this._state.change({ +matchCase:this._storageService.getBoolean("editor.matchCase",f.StorageScope.WORKSPACE,this._state.matchCase),wholeWord:this._storageService.getBoolean("editor.wholeWord",f.StorageScope.WORKSPACE,this._state.wholeWord),isRegex:this._storageService.getBoolean("editor.isRegex",f.StorageScope.WORKSPACE,this._state.isRegex)},!1)},t.prototype.getState=function(){return this._state},t.prototype.closeFindWidget=function(){this._state.change({isRevealed:!1,searchScope:null},!1),this._editor.focus()},t.prototype.toggleCaseSensitive=function(){this._state.change({matchCase:!this._state.matchCase},!1)},t.prototype.toggleWholeWords=function(){this._state.change({wholeWord:!this._state.wholeWord},!1)},t.prototype.toggleRegex=function(){this._state.change({isRegex:!this._state.isRegex},!1)},t.prototype.toggleSearchScope=function(){if(this._state.searchScope)this._state.change({searchScope:null},!0);else{var e=this._editor.getSelection() +;1===e.endColumn&&e.endLineNumber>e.startLineNumber&&(e=e.setEndPosition(e.endLineNumber-1,1)),e.isEmpty()||this._state.change({searchScope:e},!0)}},t.prototype.setSearchString=function(e){this._state.isRegex&&(e=s.escapeRegExpCharacters(e)),this._state.change({searchString:e},!1)},t.prototype.highlightFindOptions=function(){},t.prototype._start=function(e){if(this.disposeModel(),this._editor.getModel()){var t={isRevealed:!0};if(e.seedSearchStringFromSelection){(n=w(this._editor))&&(this._state.isRegex?t.searchString=s.escapeRegExpCharacters(n):t.searchString=n)}if(!t.searchString&&e.seedSearchStringFromGlobalClipboard){var n=this.getGlobalBufferTerm();n&&(t.searchString=n)}e.forceRevealReplace?t.isReplaceRevealed=!0:this._findWidgetVisible.get()||(t.isReplaceRevealed=!1),this._state.change(t,!1),this._model||(this._model=new d.FindModelBoundToEditorModel(this._editor,this._state))}},t.prototype.start=function(e){this._start(e)},t.prototype.moveToNextMatch=function(){ +return!!this._model&&(this._model.moveToNextMatch(),!0)},t.prototype.moveToPrevMatch=function(){return!!this._model&&(this._model.moveToPrevMatch(),!0)},t.prototype.replace=function(){return!!this._model&&(this._model.replace(),!0)},t.prototype.replaceAll=function(){return!!this._model&&(this._model.replaceAll(),!0)},t.prototype.selectAllMatches=function(){return!!this._model&&(this._model.selectAllMatches(),this._editor.focus(),!0)},t.prototype.getGlobalBufferTerm=function(){return this._editor.getConfiguration().contribInfo.find.globalFindClipboard&&this._clipboardService&&!this._editor.getModel().isTooLargeForSyncing()?this._clipboardService.readFindText():""},t.prototype.setGlobalBufferTerm=function(e){this._editor.getConfiguration().contribInfo.find.globalFindClipboard&&this._clipboardService&&!this._editor.getModel().isTooLargeForSyncing()&&this._clipboardService.writeFindText(e)},t.ID="editor.contrib.findController",t=a([u(1,r.IContextKeyService),u(2,f.IStorageService),u(3,g.IClipboardService)],t) +}(i.Disposable);t.CommonFindController=E;var L=function(e){function t(t,n,i,o,r,s,a){var l=e.call(this,t,i,s,a)||this;return l._contextViewService=n,l._contextKeyService=i,l._keybindingService=o,l._themeService=r,l}return o(t,e),t.prototype._start=function(t){this._widget||this._createFindWidget(),e.prototype._start.call(this,t),2===t.shouldFocus?this._widget.focusReplaceInput():1===t.shouldFocus&&this._widget.focusFindInput()},t.prototype.highlightFindOptions=function(){this._widget||this._createFindWidget(),this._state.isRevealed?this._widget.highlightFindOptions():this._findOptionsWidget.highlightFindOptions()},t.prototype._createFindWidget=function(){this._widget=this._register(new _.FindWidget(this._editor,this,this._state,this._contextViewService,this._keybindingService,this._contextKeyService,this._themeService)),this._findOptionsWidget=this._register(new y.FindOptionsWidget(this._editor,this._state,this._keybindingService,this._themeService))}, +t=a([u(1,m.IContextViewService),u(2,r.IContextKeyService),u(3,v.IKeybindingService),u(4,C.IThemeService),u(5,f.IStorageService),u(6,b.optional(g.IClipboardService))],t)}(E);t.FindController=L;var x=function(e){function t(){return e.call(this,{id:d.FIND_IDS.StartFindAction,label:n.localize(0,null),alias:"Find",precondition:null,kbOpts:{kbExpr:null,primary:2084,weight:100},menubarOpts:{menuId:S.MenuId.MenubarEditMenu,group:"3_find",title:n.localize(1,null),order:1}})||this}return o(t,e),t.prototype.run=function(e,t){var n=E.get(t);n&&n.start({forceRevealReplace:!1,seedSearchStringFromSelection:t.getConfiguration().contribInfo.find.seedSearchStringFromSelection,seedSearchStringFromGlobalClipboard:t.getConfiguration().contribInfo.find.globalFindClipboard,shouldFocus:1,shouldAnimate:!0})},t}(l.EditorAction);t.StartFindAction=x;var N=function(e){function t(){return e.call(this,{id:d.FIND_IDS.StartFindWithSelection,label:n.localize(2,null),alias:"Find With Selection",precondition:null,kbOpts:{kbExpr:null, +primary:null,mac:{primary:2083},weight:100}})||this}return o(t,e),t.prototype.run=function(e,t){var n=E.get(t);n&&(n.start({forceRevealReplace:!1,seedSearchStringFromSelection:!0,seedSearchStringFromGlobalClipboard:!1,shouldFocus:1,shouldAnimate:!0}),n.setGlobalBufferTerm(n.getState().searchString))},t}(l.EditorAction);t.StartFindWithSelectionAction=N;var I=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o(t,e),t.prototype.run=function(e,t){var n=E.get(t);n&&!this._run(n)&&(n.start({forceRevealReplace:!1,seedSearchStringFromSelection:0===n.getState().searchString.length&&t.getConfiguration().contribInfo.find.seedSearchStringFromSelection,seedSearchStringFromGlobalClipboard:!0,shouldFocus:0,shouldAnimate:!0}),this._run(n))},t}(l.EditorAction);t.MatchFindAction=I;var M=function(e){function t(){return e.call(this,{id:d.FIND_IDS.NextMatchFindAction,label:n.localize(3,null),alias:"Find Next",precondition:null,kbOpts:{kbExpr:p.EditorContextKeys.focus,primary:61,mac:{primary:2085, +secondary:[61]},weight:100}})||this}return o(t,e),t.prototype._run=function(e){return e.moveToNextMatch()},t}(I);t.NextMatchFindAction=M;var D=function(e){function t(){return e.call(this,{id:d.FIND_IDS.PreviousMatchFindAction,label:n.localize(4,null),alias:"Find Previous",precondition:null,kbOpts:{kbExpr:p.EditorContextKeys.focus,primary:1085,mac:{primary:3109,secondary:[1085]},weight:100}})||this}return o(t,e),t.prototype._run=function(e){return e.moveToPrevMatch()},t}(I);t.PreviousMatchFindAction=D;var T=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o(t,e),t.prototype.run=function(e,t){var n=E.get(t);if(n){var i=w(t);i&&n.setSearchString(i),this._run(n)||(n.start({forceRevealReplace:!1,seedSearchStringFromSelection:t.getConfiguration().contribInfo.find.seedSearchStringFromSelection,seedSearchStringFromGlobalClipboard:!1,shouldFocus:0,shouldAnimate:!0}),this._run(n))}},t}(l.EditorAction);t.SelectionMatchFindAction=T;var k=function(e){function t(){return e.call(this,{ +id:d.FIND_IDS.NextSelectionMatchFindAction,label:n.localize(5,null),alias:"Find Next Selection",precondition:null,kbOpts:{kbExpr:p.EditorContextKeys.focus,primary:2109,weight:100}})||this}return o(t,e),t.prototype._run=function(e){return e.moveToNextMatch()},t}(T);t.NextSelectionMatchFindAction=k;var R=function(e){function t(){return e.call(this,{id:d.FIND_IDS.PreviousSelectionMatchFindAction,label:n.localize(6,null),alias:"Find Previous Selection",precondition:null,kbOpts:{kbExpr:p.EditorContextKeys.focus,primary:3133,weight:100}})||this}return o(t,e),t.prototype._run=function(e){return e.moveToPrevMatch()},t}(T);t.PreviousSelectionMatchFindAction=R;var O=function(e){function t(){return e.call(this,{id:d.FIND_IDS.StartFindReplaceAction,label:n.localize(7,null),alias:"Replace",precondition:null,kbOpts:{kbExpr:null,primary:2086,mac:{primary:2596},weight:100},menubarOpts:{menuId:S.MenuId.MenubarEditMenu,group:"3_find",title:n.localize(8,null),order:2}})||this}return o(t,e),t.prototype.run=function(e,t){ +if(!t.getConfiguration().readOnly){var n=E.get(t),i=t.getSelection(),o=!i.isEmpty()&&i.startLineNumber===i.endLineNumber&&t.getConfiguration().contribInfo.find.seedSearchStringFromSelection,r=n.getState().searchString||o?2:1;n&&n.start({forceRevealReplace:!0,seedSearchStringFromSelection:o,seedSearchStringFromGlobalClipboard:t.getConfiguration().contribInfo.find.seedSearchStringFromSelection,shouldFocus:r,shouldAnimate:!0})}},t}(l.EditorAction);t.StartFindReplaceAction=O,l.registerEditorContribution(L),l.registerEditorAction(x),l.registerEditorAction(N),l.registerEditorAction(M),l.registerEditorAction(D),l.registerEditorAction(k),l.registerEditorAction(R),l.registerEditorAction(O);var P=l.EditorCommand.bindToContribution(E.get);l.registerEditorCommand(new P({id:d.FIND_IDS.CloseFindWidgetCommand,precondition:d.CONTEXT_FIND_WIDGET_VISIBLE,handler:function(e){return e.closeFindWidget()},kbOpts:{weight:105,kbExpr:p.EditorContextKeys.focus,primary:9,secondary:[1033]}})),l.registerEditorCommand(new P({ +id:d.FIND_IDS.ToggleCaseSensitiveCommand,precondition:null,handler:function(e){return e.toggleCaseSensitive()},kbOpts:{weight:105,kbExpr:p.EditorContextKeys.focus,primary:d.ToggleCaseSensitiveKeybinding.primary,mac:d.ToggleCaseSensitiveKeybinding.mac,win:d.ToggleCaseSensitiveKeybinding.win,linux:d.ToggleCaseSensitiveKeybinding.linux}})),l.registerEditorCommand(new P({id:d.FIND_IDS.ToggleWholeWordCommand,precondition:null,handler:function(e){return e.toggleWholeWords()},kbOpts:{weight:105,kbExpr:p.EditorContextKeys.focus,primary:d.ToggleWholeWordKeybinding.primary,mac:d.ToggleWholeWordKeybinding.mac,win:d.ToggleWholeWordKeybinding.win,linux:d.ToggleWholeWordKeybinding.linux}})),l.registerEditorCommand(new P({id:d.FIND_IDS.ToggleRegexCommand,precondition:null,handler:function(e){return e.toggleRegex()},kbOpts:{weight:105,kbExpr:p.EditorContextKeys.focus,primary:d.ToggleRegexKeybinding.primary,mac:d.ToggleRegexKeybinding.mac,win:d.ToggleRegexKeybinding.win,linux:d.ToggleRegexKeybinding.linux}})), +l.registerEditorCommand(new P({id:d.FIND_IDS.ToggleSearchScopeCommand,precondition:null,handler:function(e){return e.toggleSearchScope()},kbOpts:{weight:105,kbExpr:p.EditorContextKeys.focus,primary:d.ToggleSearchScopeKeybinding.primary,mac:d.ToggleSearchScopeKeybinding.mac,win:d.ToggleSearchScopeKeybinding.win,linux:d.ToggleSearchScopeKeybinding.linux}})),l.registerEditorCommand(new P({id:d.FIND_IDS.ReplaceOneAction,precondition:d.CONTEXT_FIND_WIDGET_VISIBLE,handler:function(e){return e.replace()},kbOpts:{weight:105,kbExpr:p.EditorContextKeys.focus,primary:3094}})),l.registerEditorCommand(new P({id:d.FIND_IDS.ReplaceAllAction,precondition:d.CONTEXT_FIND_WIDGET_VISIBLE,handler:function(e){return e.replaceAll()},kbOpts:{weight:105,kbExpr:p.EditorContextKeys.focus,primary:2563}})),l.registerEditorCommand(new P({id:d.FIND_IDS.SelectAllMatchesAction,precondition:d.CONTEXT_FIND_WIDGET_VISIBLE,handler:function(e){return e.selectAllMatches()},kbOpts:{weight:105,kbExpr:p.EditorContextKeys.focus,primary:515}}))}), +define(t[549],n([1,0,326,2,39,14,24,20,11,3,21,54,181,17,196,29,22,16,44]),function(e,t,n,i,r,s,a,l,u,d,c,h,p,f,g,m,v,_,y){"use strict";function C(e,t,n){for(var i=b(e,t[0],!n),o=1,r=t.length;o1&&n.push(new c.Selection(e.endLineNumber,e.endColumn,e.endLineNumber,e.endColumn))}},t.prototype.run=function(e,t){var n=this,i=t.getModel(),o=[];t.getSelections().forEach(function(e){return n.getCursorsForSelection(e,i,o)}),o.length>0&&t.setSelections(o)},t}(u.EditorAction),L=function(){return function(e,t,n){this.selections=e,this.revealRange=t,this.revealScrollType=n}}();t.MultiCursorSessionResult=L;var x=function(){function e(e,t,n,i,o,r,s){this._editor=e,this.findController=t,this.isDisconnectedFromFindController=n,this.searchText=i,this.wholeWord=o,this.matchCase=r,this.currentMatch=s}return e.create=function(t,n){var i=n.getState() +;if(!t.hasTextFocus()&&i.isRevealed&&i.searchString.length>0)return new e(t,n,!1,i.searchString,i.wholeWord,i.matchCase,null);var o,r,s=!1,a=t.getSelections();1===a.length&&a[0].isEmpty()?(s=!0,o=!0,r=!0):(o=i.wholeWord,r=i.matchCase);var l,u=t.getSelection(),d=null;if(u.isEmpty()){var h=t.getModel().getWordAtPosition(u.getStartPosition());if(!h)return null;l=h.word,d=new c.Selection(u.startLineNumber,h.startColumn,u.startLineNumber,h.endColumn)}else l=t.getModel().getValueInRange(u).replace(/\r\n/g,"\n");return new e(t,n,s,l,o,r,d)},e.prototype.addSelectionToNextFindMatch=function(){var e=this._getNextMatch();if(!e)return null;var t=this._editor.getSelections();return new L(t.concat(e),e,0)},e.prototype.moveSelectionToNextFindMatch=function(){var e=this._getNextMatch();if(!e)return null;var t=this._editor.getSelections();return new L(t.slice(0,t.length-1).concat(e),e,0)},e.prototype._getNextMatch=function(){if(this.currentMatch){var e=this.currentMatch;return this.currentMatch=null,e} +this.findController.highlightFindOptions();var t=this._editor.getSelections(),n=t[t.length-1],i=this._editor.getModel().findNextMatch(this.searchText,n.getEndPosition(),!1,this.matchCase,this.wholeWord?this._editor.getConfiguration().wordSeparators:null,!1);return i?new c.Selection(i.range.startLineNumber,i.range.startColumn,i.range.endLineNumber,i.range.endColumn):null},e.prototype.addSelectionToPreviousFindMatch=function(){var e=this._getPreviousMatch();if(!e)return null;var t=this._editor.getSelections();return new L(t.concat(e),e,0)},e.prototype.moveSelectionToPreviousFindMatch=function(){var e=this._getPreviousMatch();if(!e)return null;var t=this._editor.getSelections();return new L(t.slice(0,t.length-1).concat(e),e,0)},e.prototype._getPreviousMatch=function(){if(this.currentMatch){var e=this.currentMatch;return this.currentMatch=null,e}this.findController.highlightFindOptions() +;var t=this._editor.getSelections(),n=t[t.length-1],i=this._editor.getModel().findPreviousMatch(this.searchText,n.getStartPosition(),!1,this.matchCase,this.wholeWord?this._editor.getConfiguration().wordSeparators:null,!1);return i?new c.Selection(i.range.startLineNumber,i.range.startColumn,i.range.endLineNumber,i.range.endColumn):null},e.prototype.selectAll=function(){return this.findController.highlightFindOptions(),this._editor.getModel().findMatches(this.searchText,!0,!1,this.matchCase,this.wholeWord?this._editor.getConfiguration().wordSeparators:null,!1,1073741824)},e}();t.MultiCursorSession=x;var N=function(e){function t(t){var n=e.call(this)||this;return n._editor=t,n._ignoreSelectionChange=!1,n._session=null,n._sessionDispose=[],n}return o(t,e),t.get=function(e){return e.getContribution(t.ID)},t.prototype.dispose=function(){this._endSession(),e.prototype.dispose.call(this)},t.prototype.getId=function(){return t.ID},t.prototype._beginSessionIfNeeded=function(e){var t=this;if(!this._session){ +var n=x.create(this._editor,e);if(!n)return;this._session=n;var i={searchString:this._session.searchText};this._session.isDisconnectedFromFindController&&(i.wholeWordOverride=1,i.matchCaseOverride=1,i.isRegexOverride=2),e.getState().change(i,!1),this._sessionDispose=[this._editor.onDidChangeCursorSelection(function(e){t._ignoreSelectionChange||t._endSession()}),this._editor.onDidBlurEditorText(function(){t._endSession()}),e.getState().onFindReplaceStateChange(function(e){(e.matchCase||e.wholeWord)&&t._endSession()})]}},t.prototype._endSession=function(){if(this._sessionDispose=i.dispose(this._sessionDispose),this._session&&this._session.isDisconnectedFromFindController){var e={wholeWordOverride:0,matchCaseOverride:0,isRegexOverride:0};this._session.findController.getState().change(e,!1)}this._session=null},t.prototype._setSelections=function(e){this._ignoreSelectionChange=!0,this._editor.setSelections(e),this._ignoreSelectionChange=!1},t.prototype._expandEmptyToWord=function(e,t){if(!t.isEmpty())return t +;var n=e.getWordAtPosition(t.getStartPosition());return n?new c.Selection(t.startLineNumber,n.startColumn,t.startLineNumber,n.endColumn):t},t.prototype._applySessionResult=function(e){e&&(this._setSelections(e.selections),e.revealRange&&this._editor.revealRangeInCenterIfOutsideViewport(e.revealRange,e.revealScrollType))},t.prototype.getSession=function(e){return this._session},t.prototype.addSelectionToNextFindMatch=function(e){if(!this._session){var t=this._editor.getSelections();if(t.length>1){var n=e.getState().matchCase;if(!C(this._editor.getModel(),t,n)){for(var i=this._editor.getModel(),o=[],r=0,s=t.length;r0&&n.isRegex)t=this._editor.getModel().findMatches(n.searchString,!0,n.isRegex,n.matchCase,n.wholeWord?this._editor.getConfiguration().wordSeparators:null,!1,1073741824);else{if(this._beginSessionIfNeeded(e),!this._session)return;t=this._session.selectAll()}if(t.length>0){for(var i=this._editor.getSelection(),o=0,r=t.length;o1){var l=r.getState().matchCase;if(!C(t.getModel(),a,l))return null}s=x.create(t,r)}if(!s)return null;var u=null,d=f.DocumentHighlightProviderRegistry.has(n);if(s.currentMatch){if(d)return null;if(!t.getConfiguration().contribInfo.occurrencesHighlight)return null;u=s.currentMatch}if(/^[ \t]+$/.test(s.searchText))return null;if(s.searchText.length>200)return null;var c=r.getState(),h=c.matchCase;if(c.isRevealed){var p=c.searchString;h||(p=p.toLowerCase());var m=s.searchText;if(h||(m=m.toLowerCase()), +p===m&&s.matchCase===c.matchCase&&s.wholeWord===c.wholeWord&&!c.isRegex)return null}return new P(u,s.searchText,s.matchCase,s.wholeWord?t.getConfiguration().wordSeparators:null)},t.prototype._setState=function(e){if(P.softEquals(this.state,e))this.state=e;else if(this.state=e,this.state){var n=this.editor.getModel();if(!n.isTooLargeForTokenization()){var i=f.DocumentHighlightProviderRegistry.has(n),o=n.findMatches(this.state.searchText,!0,!1,this.state.matchCase,this.state.wordSeparators,!1).map(function(e){return e.range});o.sort(d.Range.compareRangesUsingStarts);var r=this.editor.getSelections();r.sort(d.Range.compareRangesUsingStarts);for(var s=[],a=0,l=0,u=o.length,c=r.length;a=c)s.push(h),a++;else{var p=d.Range.compareRangesUsingStarts(h,r[l]);p<0?(!r[l].isEmpty()&&d.Range.areIntersecting(h,r[l])||s.push(h),a++):p>0?l++:(a++,l++)}}var g=s.map(function(e){return{range:e,options:i?t._SELECTION_HIGHLIGHT:t._SELECTION_HIGHLIGHT_OVERVIEW}}) +;this.decorations=this.editor.deltaDecorations(this.decorations,g)}}else this.decorations=this.editor.deltaDecorations(this.decorations,[])},t.prototype.dispose=function(){this._setState(null),e.prototype.dispose.call(this)},t.ID="editor.contrib.selectionHighlighter",t._SELECTION_HIGHLIGHT_OVERVIEW=m.ModelDecorationOptions.register({stickiness:a.TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges,className:"selectionHighlight",overviewRuler:{color:_.themeColorFromId(v.overviewRulerSelectionHighlightForeground),darkColor:_.themeColorFromId(v.overviewRulerSelectionHighlightForeground),position:a.OverviewRulerLane.Center}}),t._SELECTION_HIGHLIGHT=m.ModelDecorationOptions.register({stickiness:a.TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges,className:"selectionHighlight"}),t}(i.Disposable);t.SelectionHighlighter=A,u.registerEditorContribution(N),u.registerEditorContribution(A),u.registerEditorAction(S),u.registerEditorAction(w),u.registerEditorAction(E),u.registerEditorAction(M),u.registerEditorAction(D), +u.registerEditorAction(T),u.registerEditorAction(k),u.registerEditorAction(R),u.registerEditorAction(O)}),define(t[147],n([1,0,31,50,15,70]),function(e,t,n,i,o,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.IWorkspaceContextService=o.createDecorator("contextService");!function(e){e.isIWorkspace=function(e){return e&&"object"==typeof e&&"string"==typeof e.id&&"string"==typeof e.name&&Array.isArray(e.folders)}}(t.IWorkspace||(t.IWorkspace={}));!function(e){e.isIWorkspaceFolder=function(e){return e&&"object"==typeof e&&n.default.isUri(e.uri)&&"string"==typeof e.name&&"function"==typeof e.toResource}}(t.IWorkspaceFolder||(t.IWorkspaceFolder={}));var s=function(){function e(e,t,n,i,o){void 0===t&&(t=""),void 0===n&&(n=[]),void 0===i&&(i=null),this._id=e,this._name=t,this._configuration=i,this._ctime=o,this._foldersMap=r.TernarySearchTree.forPaths(),this.folders=n}return Object.defineProperty(e.prototype,"folders",{get:function(){return this._folders},set:function(e){this._folders=e, +this.updateFoldersMap()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"id",{get:function(){return this._id},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"name",{get:function(){return this._name},set:function(e){this._name=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"configuration",{get:function(){return this._configuration},set:function(e){this._configuration=e},enumerable:!0,configurable:!0}),e.prototype.getFolder=function(e){return e?this._foldersMap.findSubstr(e.toString()):null},e.prototype.updateFoldersMap=function(){this._foldersMap=r.TernarySearchTree.forPaths();for(var e=0,t=this.folders;e1?this.badge.setTitleFormat(n.localize(1,null,t)):this.badge.setTitleFormat(n.localize(2,null,t))},e=a([u(1,b.IWorkspaceContextService),u(2,C.optional(T.IEnvironmentService)),u(3,M.IThemeService)],e)}(),K=function(){function e(e){var t=document.createElement("div");this.before=document.createElement("span"),this.inside=document.createElement("span"),this.after=document.createElement("span"),m.addClass(this.inside,"referenceMatch"),m.addClass(t,"reference"),t.appendChild(this.before),t.appendChild(this.inside),t.appendChild(this.after),e.appendChild(t)}return e.prototype.set=function(e){var t=e.parent.preview.preview(e.range),n=t.before,i=t.inside,o=t.after;this.before.innerHTML=h.escape(n), +this.inside.innerHTML=h.escape(i),this.after.innerHTML=h.escape(o)},e}(),U=function(){function e(e,t,n){this._contextService=e,this._themeService=t,this._environmentService=n}return e.prototype.getHeight=function(e,t){return 23},e.prototype.getTemplateId=function(t,n){if(n instanceof x.FileReferences)return e._ids.FileReferences;if(n instanceof x.OneReference)return e._ids.OneReference;throw n},e.prototype.renderTemplate=function(t,n,i){if(n===e._ids.FileReferences)return new z(i,this._contextService,this._environmentService,this._themeService);if(n===e._ids.OneReference)return new K(i);throw n},e.prototype.renderElement=function(e,t,n,i){if(t instanceof x.FileReferences)i.set(t);else{if(!(t instanceof x.OneReference))throw n;i.set(t)}},e.prototype.disposeTemplate=function(e,t,n){n instanceof z&&n.dispose()},e._ids={FileReferences:"FileReferences",OneReference:"OneReference"},e=a([u(0,b.IWorkspaceContextService),u(1,M.IThemeService),u(2,C.optional(T.IEnvironmentService))],e)}(),j=function(){function e(){} +return e.prototype.getAriaLabel=function(e,t){return t instanceof x.FileReferences?t.getAriaMessage():t instanceof x.OneReference?t.getAriaMessage():void 0},e}(),q=function(){function e(e,t){var n=this;this._disposables=[],this._onDidChangePercentages=new r.Emitter,this._ratio=t,this._sash=new v.Sash(e,{getVerticalSashLeft:function(){return n._width*n._ratio},getVerticalSashHeight:function(){return n._height}});var i;this._disposables.push(this._sash.onDidStart(function(e){i=e.startX-n._width*n.ratio})),this._disposables.push(this._sash.onDidChange(function(e){var t=e.currentX-i;t>20&&t+200?e.children[0]:void 0},h.prototype._revealReference=function(e,t){return d(this,void 0,void 0,function(){var o,r=this;return c(this,function(a){switch(a.label){case 0:return e.uri.scheme!==l.Schemas.inMemory?this.setTitle(W.basenameOrAuthority(e.uri),this._uriDisplay.getLabel(W.dirname(e.uri),!1)):this.setTitle(n.localize(6,null)),o=this._textModelResolverService.createModelReference(e.uri),t?[4,this._tree.reveal(e.parent)]:[3,2];case 1:a.sent(),a.label=2;case 2:return[2,p.TPromise.join([o,this._tree.reveal(e)]).then(function(t){var n=t[0];if(r._model){s.dispose(r._previewModelReference);var i=n.object;if(i){r._previewModelReference=n;var o=r._preview.getModel()===i.textEditorModel;r._preview.setModel(i.textEditorModel) +;var a=S.Range.lift(e.range).collapseToStart();r._preview.setSelection(a),r._preview.revealRangeInCenter(a,o?0:1)}else r._preview.setModel(r._previewNotAvailableMessage),n.dispose()}else n.dispose()},i.onUnexpectedError)]}})})},h=a([u(3,M.IThemeService),u(4,N.ITextModelService),u(5,C.IInstantiationService),u(6,F.IUriDisplayService)],h)}(L.PeekViewWidget);t.ReferenceWidget=G,t.peekViewTitleBackground=I.registerColor("peekViewTitle.background",{dark:"#1E1E1E",light:"#FFFFFF",hc:"#0C141F"},n.localize(7,null)),t.peekViewTitleForeground=I.registerColor("peekViewTitleLabel.foreground",{dark:"#FFFFFF",light:"#333333",hc:"#FFFFFF"},n.localize(8,null)),t.peekViewTitleInfoForeground=I.registerColor("peekViewTitleDescription.foreground",{dark:"#ccccccb3",light:"#6c6c6cb3",hc:"#FFFFFF99"},n.localize(9,null)),t.peekViewBorder=I.registerColor("peekView.border",{dark:"#007acc",light:"#007acc",hc:I.contrastBorder},n.localize(10,null)),t.peekViewResultsBackground=I.registerColor("peekViewResult.background",{dark:"#252526", +light:"#F3F3F3",hc:f.Color.black},n.localize(11,null)),t.peekViewResultsMatchForeground=I.registerColor("peekViewResult.lineForeground",{dark:"#bbbbbb",light:"#646465",hc:f.Color.white},n.localize(12,null)),t.peekViewResultsFileForeground=I.registerColor("peekViewResult.fileForeground",{dark:f.Color.white,light:"#1E1E1E",hc:f.Color.white},n.localize(13,null)),t.peekViewResultsSelectionBackground=I.registerColor("peekViewResult.selectionBackground",{dark:"#3399ff33",light:"#3399ff33",hc:null},n.localize(14,null)),t.peekViewResultsSelectionForeground=I.registerColor("peekViewResult.selectionForeground",{dark:f.Color.white,light:"#6C6C6C",hc:f.Color.white},n.localize(15,null)),t.peekViewEditorBackground=I.registerColor("peekViewEditor.background",{dark:"#001F33",light:"#F2F8FC",hc:f.Color.black},n.localize(16,null)),t.peekViewEditorGutterBackground=I.registerColor("peekViewEditorGutter.background",{dark:t.peekViewEditorBackground,light:t.peekViewEditorBackground,hc:t.peekViewEditorBackground +},n.localize(17,null)),t.peekViewResultsMatchHighlight=I.registerColor("peekViewResult.matchHighlightBackground",{dark:"#ea5c004d",light:"#ea5c004d",hc:null},n.localize(18,null)),t.peekViewEditorMatchHighlight=I.registerColor("peekViewEditor.matchHighlightBackground",{dark:"#ff8f0099",light:"#f5d802de",hc:null},n.localize(19,null)),t.peekViewEditorMatchHighlightBorder=I.registerColor("peekViewEditor.matchHighlightBorder",{dark:null,light:null,hc:I.activeContrastBorder},n.localize(20,null)),M.registerThemingParticipant(function(e,n){var i=e.getColor(t.peekViewResultsMatchHighlight);i&&n.addRule(".monaco-editor .reference-zone-widget .ref-tree .referenceMatch { background-color: "+i+"; }");var o=e.getColor(t.peekViewEditorMatchHighlight);o&&n.addRule(".monaco-editor .reference-zone-widget .preview .reference-decoration { background-color: "+o+"; }");var r=e.getColor(t.peekViewEditorMatchHighlightBorder) +;r&&n.addRule(".monaco-editor .reference-zone-widget .preview .reference-decoration { border: 2px solid "+r+"; box-sizing: border-box; }");var s=e.getColor(I.activeContrastBorder);s&&n.addRule(".monaco-editor .reference-zone-widget .ref-tree .referenceMatch { border: 1px dotted "+s+"; box-sizing: border-box; }");var a=e.getColor(t.peekViewResultsBackground);a&&n.addRule(".monaco-editor .reference-zone-widget .ref-tree { background-color: "+a+"; }");var l=e.getColor(t.peekViewResultsMatchForeground);l&&n.addRule(".monaco-editor .reference-zone-widget .ref-tree { color: "+l+"; }");var u=e.getColor(t.peekViewResultsFileForeground);u&&n.addRule(".monaco-editor .reference-zone-widget .ref-tree .reference-file { color: "+u+"; }");var d=e.getColor(t.peekViewResultsSelectionBackground);d&&n.addRule(".monaco-editor .reference-zone-widget .ref-tree .monaco-tree.focused .monaco-tree-rows > .monaco-tree-row.selected:not(.highlighted) { background-color: "+d+"; }");var c=e.getColor(t.peekViewResultsSelectionForeground) +;c&&n.addRule(".monaco-editor .reference-zone-widget .ref-tree .monaco-tree.focused .monaco-tree-rows > .monaco-tree-row.selected:not(.highlighted) { color: "+c+" !important; }");var h=e.getColor(t.peekViewEditorBackground);h&&n.addRule(".monaco-editor .reference-zone-widget .preview .monaco-editor .monaco-editor-background,.monaco-editor .reference-zone-widget .preview .monaco-editor .inputarea.ime-input {\tbackground-color: "+h+";}");var p=e.getColor(t.peekViewEditorGutterBackground);p&&n.addRule(".monaco-editor .reference-zone-widget .preview .monaco-editor .margin {\tbackground-color: "+p+";}")})}),define(t[148],n([1,0,331,10,2,32,15,19,51,72,198,3,12,37]),function(e,t,n,i,o,r,s,l,h,p,f,g,m,v){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ctxReferenceSearchVisible=new l.RawContextKey("referenceSearchVisible",!1);var _=function(){function e(e,n,i,o,r,s,a,l){this._defaultTreeKeyboardSupport=e,this._editorService=o,this._notificationService=r,this._instantiationService=s, +this._storageService=a,this._configurationService=l,this._requestIdPool=0,this._disposables=[],this._ignoreModelChangeEvent=!1,this._editor=n,this._referenceSearchVisible=t.ctxReferenceSearchVisible.bindTo(i)}return e.get=function(t){return t.getContribution(e.ID)},e.prototype.getId=function(){return e.ID},e.prototype.dispose=function(){this._referenceSearchVisible.reset(),o.dispose(this._disposables),o.dispose(this._widget),o.dispose(this._model),this._widget=null,this._model=null,this._editor=null},e.prototype.toggleWidget=function(e,t,i){var o,r=this;if(this._widget&&(o=this._widget.position),this.closeWidget(),o&&e.containsPosition(o))return null;this._referenceSearchVisible.set(!0),this._disposables.push(this._editor.onDidChangeModelLanguage(function(){r.closeWidget()})),this._disposables.push(this._editor.onDidChangeModel(function(){r._ignoreModelChangeEvent||r.closeWidget()}));var s=JSON.parse(this._storageService.get("peekViewLayout",void 0,"{}")) +;this._widget=this._instantiationService.createInstance(f.ReferenceWidget,this._editor,this._defaultTreeKeyboardSupport,s),this._widget.setTitle(n.localize(0,null)),this._widget.show(e),this._disposables.push(this._widget.onDidClose(function(){t.cancel(),r._storageService.store("peekViewLayout",JSON.stringify(r._widget.layoutData)),r._widget=null,r.closeWidget()})),this._disposables.push(this._widget.onDidSelectReference(function(e){var t=e.element,n=e.kind;switch(n){case"open":if("editor"===e.source&&r._configurationService.getValue("editor.stablePeek"))break;case"side":r.openReference(t,"side"===n);break;case"goto":i.onGoto?i.onGoto(t):r._gotoReference(t)}}));var a=++this._requestIdPool;t.then(function(t){if(a===r._requestIdPool&&r._widget)return r._model&&r._model.dispose(),r._model=t,r._widget.setModel(r._model).then(function(){if(r._widget){r._widget.setMetaTitle(i.getMetaTitle(r._model));var t=r._editor.getModel().uri,n=new m.Position(e.startLineNumber,e.startColumn),o=r._model.nearestReference(t,n) +;if(o)return r._widget.setSelection(o)}})},function(e){r._notificationService.error(e)})},e.prototype.goToNextOrPreviousReference=function(e){return d(this,void 0,void 0,function(){var t,n,i;return c(this,function(o){switch(o.label){case 0:return this._model?(t=this._model.nearestReference(this._editor.getModel().uri,this._widget.position),n=this._model.nextOrPreviousReference(t,e),i=this._editor.hasTextFocus(),[4,this._widget.setSelection(n)]):[3,3];case 1:return o.sent(),[4,this._gotoReference(n)];case 2:o.sent(),i&&this._editor.focus(),o.label=3;case 3:return[2]}})})},e.prototype.closeWidget=function(){o.dispose(this._widget),this._widget=null,this._referenceSearchVisible.reset(),this._disposables=o.dispose(this._disposables),o.dispose(this._model),this._model=null,this._editor.focus(),this._requestIdPool+=1},e.prototype._gotoReference=function(e){var t=this;this._widget.hide(),this._ignoreModelChangeEvent=!0;var n=g.Range.lift(e.range).collapseToStart();return this._editorService.openCodeEditor({ +resource:e.uri,options:{selection:n}},this._editor).then(function(e){t._ignoreModelChangeEvent=!1,e&&e===t._editor?(t._widget.show(n),t._widget.focus()):t.closeWidget()},function(e){t._ignoreModelChangeEvent=!1,i.onUnexpectedError(e)})},e.prototype.openReference=function(e,t){var n=e.uri,i=e.range;this._editorService.openCodeEditor({resource:n,options:{selection:i}},this._editor,t),t||this.closeWidget()},e.ID="editor.contrib.referencesController",e=a([u(2,l.IContextKeyService),u(3,r.ICodeEditorService),u(4,v.INotificationService),u(5,s.IInstantiationService),u(6,p.IStorageService),u(7,h.IConfigurationService)],e)}();t.ReferencesController=_}),define(t[200],n([1,0,316,52,39,18,32,3,11,174,148,123,144,19,143,20,92,37,14]),function(e,t,n,i,r,s,a,l,u,d,c,h,p,f,g,m,v,_,y){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var C=function(){return function(e,t,n,i){void 0===e&&(e=!1),void 0===t&&(t=!1),void 0===n&&(n=!0),void 0===i&&(i=!0),this.openToSide=e,this.openInPeek=t,this.filterCurrent=n, +this.showMessage=i}}();t.DefinitionActionConfig=C;var b=function(e){function t(t,n){var i=e.call(this,n)||this;return i._configuration=t,i}return o(t,e),t.prototype.run=function(e,t){var n=this,i=e.get(_.INotificationService),o=e.get(a.ICodeEditorService),r=e.get(v.IProgressService),s=t.getModel(),u=t.getPosition(),d=this._getDeclarationsAtPosition(s,u).then(function(e){if(!s.isDisposed()&&t.getModel()===s){for(var i=-1,r=[],a=0;a1&&n.localize(2,null,e.references.length)},t.prototype._onResult=function(e,t,n){var o=this,r=n.getAriaMessage();if(i.alert(r),this._configuration.openInPeek)this._openInPeek(e,t,n);else{var s=n.nearestReference(t.getModel().uri,t.getPosition());this._openReference(t,e,s,this._configuration.openToSide).then(function(t){t&&n.references.length>1?o._openInPeek(e,t,n):n.dispose()})}},t.prototype._openReference=function(e,t,n,i){var o=n.uri,r=n.range;return t.openCodeEditor({resource:o,options:{selection:l.Range.collapseToStart(r),revealIfOpened:!0,revealInCenterIfOutsideViewport:!0}},e,i)},t.prototype._openInPeek=function(e,t,n){var i=this,o=c.ReferencesController.get(t);o?o.toggleWidget(t.getSelection(),y.createCancelablePromise(function(e){return Promise.resolve(n)}),{getMetaTitle:function(e){ +return i._getMetaTitle(e)},onGoto:function(n){return o.closeWidget(),i._openReference(t,e,n,!1)}}):n.dispose()},t}(u.EditorAction);t.DefinitionAction=b;var S=s.isWeb?2118:70,w=function(e){function t(){return e.call(this,new C,{id:t.ID,label:n.localize(3,null),alias:"Go to Definition",precondition:f.ContextKeyExpr.and(m.EditorContextKeys.hasDefinitionProvider,m.EditorContextKeys.isInEmbeddedEditor.toNegated()),kbOpts:{kbExpr:m.EditorContextKeys.editorTextFocus,primary:S,weight:100},menuOpts:{group:"navigation",order:1.1}})||this}return o(t,e),t.ID="editor.action.goToDeclaration",t}(b);t.GoToDefinitionAction=w;var E=function(e){function t(){return e.call(this,new C(!0),{id:t.ID,label:n.localize(4,null),alias:"Open Definition to the Side",precondition:f.ContextKeyExpr.and(m.EditorContextKeys.hasDefinitionProvider,m.EditorContextKeys.isInEmbeddedEditor.toNegated()),kbOpts:{kbExpr:m.EditorContextKeys.editorTextFocus,primary:r.KeyChord(2089,S),weight:100}})||this}return o(t,e), +t.ID="editor.action.openDeclarationToTheSide",t}(b);t.OpenDefinitionToSideAction=E;var L=function(e){function t(){return e.call(this,new C(void 0,!0,!1),{id:"editor.action.previewDeclaration",label:n.localize(5,null),alias:"Peek Definition",precondition:f.ContextKeyExpr.and(m.EditorContextKeys.hasDefinitionProvider,p.PeekContext.notInPeekEditor,m.EditorContextKeys.isInEmbeddedEditor.toNegated()),kbOpts:{kbExpr:m.EditorContextKeys.editorTextFocus,primary:582,linux:{primary:3140},weight:100},menuOpts:{group:"navigation",order:1.2}})||this}return o(t,e),t}(b);t.PeekDefinitionAction=L;var x=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o(t,e),t.prototype._getDeclarationsAtPosition=function(e,t){return d.getImplementationsAtPosition(e,t)},t.prototype._getNoResultFoundMessage=function(e){return e&&e.word?n.localize(6,null,e.word):n.localize(7,null)},t.prototype._getMetaTitle=function(e){return e.references.length>1&&n.localize(8,null,e.references.length)},t}(b) +;t.ImplementationAction=x;var N=function(e){function t(){return e.call(this,new C,{id:t.ID,label:n.localize(9,null),alias:"Go to Implementation",precondition:f.ContextKeyExpr.and(m.EditorContextKeys.hasImplementationProvider,m.EditorContextKeys.isInEmbeddedEditor.toNegated()),kbOpts:{kbExpr:m.EditorContextKeys.editorTextFocus,primary:2118,weight:100}})||this}return o(t,e),t.ID="editor.action.goToImplementation",t}(x);t.GoToImplementationAction=N;var I=function(e){function t(){return e.call(this,new C(!1,!0,!1),{id:t.ID,label:n.localize(10,null),alias:"Peek Implementation",precondition:f.ContextKeyExpr.and(m.EditorContextKeys.hasImplementationProvider,m.EditorContextKeys.isInEmbeddedEditor.toNegated()),kbOpts:{kbExpr:m.EditorContextKeys.editorTextFocus,primary:3142,weight:100}})||this}return o(t,e),t.ID="editor.action.peekImplementation",t}(x);t.PeekImplementationAction=I;var M=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o(t,e), +t.prototype._getDeclarationsAtPosition=function(e,t){return d.getTypeDefinitionsAtPosition(e,t)},t.prototype._getNoResultFoundMessage=function(e){return e&&e.word?n.localize(11,null,e.word):n.localize(12,null)},t.prototype._getMetaTitle=function(e){return e.references.length>1&&n.localize(13,null,e.references.length)},t}(b);t.TypeDefinitionAction=M;var D=function(e){function t(){return e.call(this,new C,{id:t.ID,label:n.localize(14,null),alias:"Go to Type Definition",precondition:f.ContextKeyExpr.and(m.EditorContextKeys.hasTypeDefinitionProvider,m.EditorContextKeys.isInEmbeddedEditor.toNegated()),kbOpts:{kbExpr:m.EditorContextKeys.editorTextFocus,primary:0,weight:100},menuOpts:{group:"navigation",order:1.4}})||this}return o(t,e),t.ID="editor.action.goToTypeDefinition",t}(M);t.GoToTypeDefinitionAction=D;var T=function(e){function t(){return e.call(this,new C(!1,!0,!1),{id:t.ID,label:n.localize(15,null),alias:"Peek Type Definition", +precondition:f.ContextKeyExpr.and(m.EditorContextKeys.hasTypeDefinitionProvider,m.EditorContextKeys.isInEmbeddedEditor.toNegated()),kbOpts:{kbExpr:m.EditorContextKeys.editorTextFocus,primary:0,weight:100}})||this}return o(t,e),t.ID="editor.action.peekTypeDefinition",t}(M);t.PeekTypeDefinitionAction=T,u.registerEditorAction(w),u.registerEditorAction(E),u.registerEditorAction(L),u.registerEditorAction(N),u.registerEditorAction(I),u.registerEditorAction(D),u.registerEditorAction(T)}),define(t[554],n([1,0,317,14,10,79,13,64,3,17,23,11,174,2,107,16,22,68,200,169,12,156]),function(e,t,n,i,o,r,s,l,d,c,h,p,f,g,m,v,_,y,C,b,S){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var w=function(){function e(e,t,n){var r=this;this.textModelResolverService=t,this.modeService=n,this.toUnhook=[],this.decorations=[],this.editor=e,this.throttler=new i.Throttler;var s=new b.ClickLinkGesture(e);this.toUnhook.push(s),this.toUnhook.push(s.onMouseMoveOrRelevantKeyDown(function(e){var t=e[0],n=e[1] +;r.startFindDefinition(t,n)})),this.toUnhook.push(s.onExecute(function(e){r.isEnabled(e)&&r.gotoDefinition(e.target,e.hasSideBySideModifier).done(function(){r.removeDecorations()},function(e){r.removeDecorations(),o.onUnexpectedError(e)})})),this.toUnhook.push(s.onCancel(function(){r.removeDecorations(),r.currentWordUnderMouse=null}))}return e.prototype.startFindDefinition=function(e,t){var i=this;if(!this.isEnabled(e,t))return this.currentWordUnderMouse=null,void this.removeDecorations();var a=e.target.position,l=a?this.editor.getModel().getWordAtPosition(a):null;if(!l)return this.currentWordUnderMouse=null,void this.removeDecorations();if(!this.currentWordUnderMouse||this.currentWordUnderMouse.startColumn!==l.startColumn||this.currentWordUnderMouse.endColumn!==l.endColumn||this.currentWordUnderMouse.word!==l.word){this.currentWordUnderMouse=l;var u=new y.EditorState(this.editor,15);this.throttler.queue(function(){return u.validate(i.editor)?i.findDefinition(e.target):s.TPromise.wrap(null) +}).then(function(e){if(e&&e.length&&u.validate(i.editor))if(e.length>1)i.addDecoration(new d.Range(a.lineNumber,l.startColumn,a.lineNumber,l.endColumn),(new r.MarkdownString).appendText(n.localize(0,null,e.length)));else{var t=e[0];if(!t.uri)return;i.textModelResolverService.createModelReference(t.uri).then(function(e){if(e.object&&e.object.textEditorModel){var n=e.object.textEditorModel,o=t.range.startLineNumber;if(0!==n.getLineMaxColumn(o)){var s,u=i.getPreviewValue(n,o);s=t.origin?d.Range.lift(t.origin):new d.Range(a.lineNumber,l.startColumn,a.lineNumber,l.endColumn),i.addDecoration(s,(new r.MarkdownString).appendCodeblock(i.modeService.getModeIdByFilenameOrFirstLine(n.uri.fsPath),u)),e.dispose()}else e.dispose()}else e.dispose()})}else i.removeDecorations()}).done(void 0,o.onUnexpectedError)}},e.prototype.getPreviewValue=function(t,n){var i=this.getPreviewRangeBasedOnBrackets(t,n);i.endLineNumber-i.startLineNumber>=e.MAX_SOURCE_PREVIEW_LINES&&(i=this.getPreviewRangeBasedOnIndentation(t,n)) +;return this.stripIndentationFromPreviewRange(t,n,i)},e.prototype.stripIndentationFromPreviewRange=function(e,t,n){for(var i=e.getLineFirstNonWhitespaceColumn(t),o=t+1;oi)return new d.Range(n,1,i+1,1);s=t.findNextBracket(new S.Position(u,c))}return new d.Range(n,1,i+1,1)},e.prototype.addDecoration=function(e,t){var n={range:e,options:{inlineClassName:"goto-definition-link",hoverMessage:t}};this.decorations=this.editor.deltaDecorations(this.decorations,[n])},e.prototype.removeDecorations=function(){this.decorations.length>0&&(this.decorations=this.editor.deltaDecorations(this.decorations,[]))},e.prototype.isEnabled=function(e,t){return this.editor.getModel()&&e.isNoneOrSingleMouseDown&&e.target.type===h.MouseTargetType.CONTENT_TEXT&&(e.hasTriggerModifier||t&&t.keyCodeIsTriggerKey)&&c.DefinitionProviderRegistry.has(this.editor.getModel())},e.prototype.findDefinition=function(e){var t=this.editor.getModel();return t?f.getDefinitionsAtPosition(t,e.position):s.TPromise.as(null)},e.prototype.gotoDefinition=function(e,t){var n=this;this.editor.setPosition(e.position) +;var i=new C.DefinitionAction(new C.DefinitionActionConfig(t,!1,!0,!1),{alias:void 0,label:void 0,id:void 0,precondition:void 0});return this.editor.invokeWithinContext(function(e){return i.run(e,n.editor)})},e.prototype.getId=function(){return e.ID},e.prototype.dispose=function(){this.toUnhook=g.dispose(this.toUnhook)},e.ID="editor.contrib.gotodefinitionwithmouse",e.MAX_SOURCE_PREVIEW_LINES=8,e=a([u(1,m.ITextModelService),u(2,l.IModeService)],e)}();p.registerEditorContribution(w),v.registerThemingParticipant(function(e,t){var n=e.getColor(_.editorActiveLinkForeground);n&&t.addRule(".monaco-editor .goto-definition-link { color: "+n+" !important; }")})}),define(t[555],n([1,0,330,13,19,97,12,11,17,3,144,148,123,14,10,20,141,23,146,198,34,31,32,40]),function(e,t,n,i,r,s,l,d,c,h,p,f,g,m,v,_,y,C,b,S,w,E,L,x){"use strict";function N(e,t){I(e,function(e){return e.closeWidget()})}function I(e,t){var n=p.getOuterEditor(e);if(n){var i=f.ReferencesController.get(n);i&&t(i)}}function M(e,t,n){ +var i=c.ReferenceProviderRegistry.ordered(e).map(function(n){return m.asWinJsPromise(function(i){return n.provideReferences(e,t,{includeDeclaration:!0},i)}).then(function(e){if(Array.isArray(e))return e},function(e){v.onUnexpectedExternalError(e)})});return Promise.all(i).then(function(e){for(var t=[],n=0,i=e;n1&&n.localize(0,null,e.references.length)}};var D=function(){function e(e,t){e instanceof y.EmbeddedCodeEditorWidget&&p.PeekContext.inPeekEditor.bindTo(t)}return e.prototype.dispose=function(){},e.prototype.getId=function(){return e.ID},e.ID="editor.contrib.referenceController",e=a([u(1,r.IContextKeyService)],e)}();t.ReferenceController=D;var T=function(e){function i(){return e.call(this,{id:"editor.action.referenceSearch.trigger",label:n.localize(1,null),alias:"Find All References", +precondition:r.ContextKeyExpr.and(_.EditorContextKeys.hasReferenceProvider,p.PeekContext.notInPeekEditor,_.EditorContextKeys.isInEmbeddedEditor.toNegated()),kbOpts:{kbExpr:_.EditorContextKeys.editorTextFocus,primary:1094,weight:100},menuOpts:{group:"navigation",order:1.5}})||this}return o(i,e),i.prototype.run=function(e,n){var i=f.ReferencesController.get(n);if(i){var o=n.getSelection(),r=n.getModel(),s=m.createCancelablePromise(function(e){return M(r,o.getStartPosition()).then(function(e){return new g.ReferencesModel(e)})});i.toggleWidget(o,s,t.defaultReferenceSearchOptions)}},i}(d.EditorAction);t.ReferenceAction=T,d.registerEditorContribution(D),d.registerEditorAction(T);w.CommandsRegistry.registerCommand({id:"editor.action.findReferences",handler:function(e,n,o){if(!(n instanceof E.default))throw new Error("illegal argument, uri");if(!o)throw new Error("illegal argument, position");var r=e.get(L.ICodeEditorService);return r.openCodeEditor({resource:n},r.getFocusedCodeEditor()).then(function(e){ +if(C.isCodeEditor(e)){var n=f.ReferencesController.get(e);if(n){var r=m.createCancelablePromise(function(t){return M(e.getModel(),l.Position.lift(o)).then(function(e){return new g.ReferencesModel(e)})}),s=new h.Range(o.lineNumber,o.column,o.lineNumber,o.column);return i.TPromise.as(n.toggleWidget(s,r,t.defaultReferenceSearchOptions))}}})}}),w.CommandsRegistry.registerCommand({id:"editor.action.showReferences",handler:function(e,n,o,r){if(!(n instanceof E.default))throw new Error("illegal argument, uri expected");var s=e.get(L.ICodeEditorService);return s.openCodeEditor({resource:n},s.getFocusedCodeEditor()).then(function(e){if(C.isCodeEditor(e)){var n=f.ReferencesController.get(e);if(n)return i.TPromise.as(n.toggleWidget(new h.Range(o.lineNumber,o.column,o.lineNumber,o.column),m.createCancelablePromise(function(e){return Promise.resolve(new g.ReferencesModel(r))}),t.defaultReferenceSearchOptions)).then(function(){return!0})}})},description:{description:"Show references at a position in a file",args:[{ +name:"uri",description:"The text document in which to show references",constraint:E.default},{name:"position",description:"The position at which to show",constraint:l.Position.isIPosition},{name:"locations",description:"An array of locations.",constraint:Array}]}}),s.KeybindingsRegistry.registerCommandAndKeybindingRule({id:"goToNextReference",weight:250,primary:62,when:f.ctxReferenceSearchVisible,handler:function(e){I(e,function(e){e.goToNextOrPreviousReference(!0)})}}),s.KeybindingsRegistry.registerCommandAndKeybindingRule({id:"goToNextReferenceFromEmbeddedEditor",weight:150,primary:62,when:p.PeekContext.inPeekEditor,handler:function(e){I(e,function(e){e.goToNextOrPreviousReference(!0)})}}),s.KeybindingsRegistry.registerCommandAndKeybindingRule({id:"goToPreviousReference",weight:250,primary:1086,when:f.ctxReferenceSearchVisible,handler:function(e){I(e,function(e){e.goToNextOrPreviousReference(!1)})}}),s.KeybindingsRegistry.registerCommandAndKeybindingRule({id:"goToPreviousReferenceFromEmbeddedEditor", +weight:150,primary:1086,when:p.PeekContext.inPeekEditor,handler:function(e){I(e,function(e){e.goToNextOrPreviousReference(!1)})}}),s.KeybindingsRegistry.registerCommandAndKeybindingRule({id:"closeReferenceSearch",weight:250,primary:9,secondary:[1033],when:r.ContextKeyExpr.and(f.ctxReferenceSearchVisible,r.ContextKeyExpr.not("config.editor.stablePeek")),handler:N}),s.KeybindingsRegistry.registerCommandAndKeybindingRule({id:"closeReferenceSearchEditor",weight:-1,primary:9,secondary:[1033],when:r.ContextKeyExpr.and(p.PeekContext.inPeekEditor,r.ContextKeyExpr.not("config.editor.stablePeek")),handler:N}),s.KeybindingsRegistry.registerCommandAndKeybindingRule({id:"openReferenceToSide",weight:100,primary:2051,mac:{primary:259},when:r.ContextKeyExpr.and(f.ctxReferenceSearchVisible,S.ctxReferenceWidgetSearchTreeFocused),handler:function(e,t){var n=e.get(b.IListService),i=n.lastFocusedList&&n.lastFocusedList.getFocus();i instanceof g.OneReference&&I(e,function(e){return e.openReference(i,!0)})}}),t.provideReferences=M, +d.registerDefaultLanguageCommand("_executeReferenceProvider",function(e,t){return M(e,t,x.CancellationToken.None)})}),define(t[556],n([1,0,133,104,188,185,510,447,448,449,512,173,455,456,457,458,196,459,460,462,200,554,518,520,521,465,522,549,527,525,555,530,468,135,532,178,533,179,474]),function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0})}),define(t[557],n([1,0,32,15,19,51,72,11,37,148]),function(e,t,n,i,r,s,l,d,c,h){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var p=function(e){function t(t,n,i,o,r,s,a){return e.call(this,!0,t,n,i,o,r,s,a)||this}return o(t,e),t=a([u(1,r.IContextKeyService),u(2,n.ICodeEditorService),u(3,c.INotificationService),u(4,i.IInstantiationService),u(5,l.IStorageService),u(6,s.IConfigurationService)],t)}(h.ReferencesController);t.StandaloneReferencesController=p,d.registerEditorContribution(p)}), +define(t[128],n([1,0,118,31,13,34,415,419,154,49,147,23,9,438,2,7,57,97,409,39,418,18,3,37,12,126,17,53,349]),function(e,t,n,i,r,s,a,l,u,d,c,h,p,f,g,m,v,_,y,C,b,S,w,E,L,x,N,I,M){"use strict";function D(e){return e&&"object"==typeof e&&(!e.overrideIdentifier||"string"==typeof e.overrideIdentifier)&&(!e.resource||e.resource instanceof i.default)}Object.defineProperty(t,"__esModule",{value:!0});var T=function(){function e(e){this.model=e,this._onDispose=new p.Emitter}return Object.defineProperty(e.prototype,"textEditorModel",{get:function(){return this.model},enumerable:!0,configurable:!0}),e.prototype.dispose=function(){this._onDispose.fire()},e}();t.SimpleModel=T;var k=function(){function e(){}return e.prototype.setEditor=function(e){this.editor=e},e.prototype.createModelReference=function(e){var t,n=this;return(t=function(e,t,n){return h.isCodeEditor(e)?t(e):n(e)}(this.editor,function(t){return n.findModel(t,e)},function(t){return n.findModel(t.getOriginalEditor(),e)||n.findModel(t.getModifiedEditor(),e) +}))?r.TPromise.as(new g.ImmortalReference(new T(t))):r.TPromise.as(new g.ImmortalReference(null))},e.prototype.findModel=function(e,t){var n=e.getModel();return n.uri.toString()!==t.toString()?null:n},e}();t.SimpleEditorModelResolverService=k;var R=function(){function e(){}return e.prototype.showWhile=function(e,t){return null},e}();t.SimpleProgressService=R;var O=function(){return function(){}}();t.SimpleDialogService=O;var P=function(){function e(){}return e.prototype.info=function(e){return this.notify({severity:n.default.Info,message:e})},e.prototype.warn=function(e){return this.notify({severity:n.default.Warning,message:e})},e.prototype.error=function(e){return this.notify({severity:n.default.Error,message:e})},e.prototype.notify=function(t){switch(t.severity){case n.default.Error:console.error(t.message);break;case n.default.Warning:console.warn(t.message);break;default:console.log(t.message)}return e.NO_OP},e.NO_OP=new E.NoOpNotification,e}();t.SimpleNotificationService=P;var A=function(){ +function e(e){this._onWillExecuteCommand=new p.Emitter,this._instantiationService=e,this._dynamicCommands=Object.create(null)}return e.prototype.addCommand=function(e){var t=this,n=e.id;return this._dynamicCommands[n]=e,g.toDisposable(function(){delete t._dynamicCommands[n]})},e.prototype.executeCommand=function(e){for(var t=[],n=1;n0&&o[r-1]===d)){var c=u.startIndex;0===a?c=0:c "console.log", da "log" vor Kurzem vervollständigt wurde.','Vorschläge auf Grundlage vorheriger Präfixe auswählen, die diese Vorschläge vervollständigt haben. Beispiel: "co" -> "console" und "con" -> "const".',"Steuert, wie Vorschläge bei Anzeige der Vorschlagsliste vorab ausgewählt werden.","Schriftgröße für Vorschlagswidget","Zeilenhöhe für Vorschlagswidget","Controls whether filtering and sorting suggestions accounts for small typos.","Control whether an active snippet prevents quick suggestions.","Steuert, ob der Editor der Auswahl ähnelnde Übereinstimmungen hervorheben soll.","Steuert, ob der Editor das Vorkommen semantischer Symbole markieren soll.","Steuert die Anzahl von Dekorationen, die an derselben Position im Übersichtslineal angezeigt werden.","Steuert, ob um das Übersichtslineal ein Rahmen gezeichnet werden soll.","Steuert den Cursoranimationsstil.","Schriftart des Editors vergrößern, wenn das Mausrad verwendet und die STRG-TASTE gedrückt wird",'Steuert den Cursorstil. Gültige Werte sind "block", "block-outline", "line", "line-thin", "underline" und "underline-thin".','Steuert die Breite des Cursors, falls editor.cursorStyle auf "line" gestellt ist.',"Aktiviert Schriftartligaturen.","Steuert die Sichtbarkeit des Cursors im Übersichtslineal.","Render whitespace characters except for single spaces between words.",'Steuert, wie der Editor Leerzeichen rendert. Mögliche Optionen: "none", "boundary" und "all". Die Option "boundary" rendert keine einzelnen Leerzeichen zwischen Wörtern.',"Steuert, ob der Editor Steuerzeichen rendern soll.","Steuert, ob der Editor Einzugsführungslinien rendern soll.","Controls whether the editor should highlight the active indent guide.","Highlights both the gutter and the current line.",'Steuert, wie der Editor die aktuelle Zeilenhervorhebung rendern soll. Mögliche Werte sind "none", "gutter", "line" und "all".',"Steuert, ob der Editor CodeLens anzeigt.","Steuert, ob für den Editor Codefaltung aktiviert ist.",'Steuert die Art und Weise, wie Faltungsbereiche berechnet werden. "auto" verwendet eine sprachspezifische Strategie für die Codefaltung, sofern verfügbar. "indentation" erzwingt eine einrückungsbasierte Strategie zur Codefaltung.',"Steuert, ob die Falt-Steuerelemente an der Leiste automatisch ausgeblendet werden.","Übereinstimmende Klammern hervorheben, wenn eine davon ausgewählt wird.","Steuert, ob der Editor den vertikalen Glyphenrand rendert. Der Glyphenrand wird hauptsächlich zum Debuggen verwendet.","Das Einfügen und Löschen von Leerzeichen folgt auf Tabstopps.","Nachfolgendes automatisch eingefügtes Leerzeichen entfernen","Peek-Editoren geöffnet lassen, auch wenn auf ihren Inhalt doppelgeklickt oder die ESC-TASTE gedrückt wird.","Steuert, ob der Editor das Verschieben einer Auswahl per Drag and Drop zulässt.","Der Editor verwendet Plattform-APIs, um zu erkennen, wenn eine Sprachausgabe angefügt wird.","Der Editor wird durchgehend für die Verwendung mit einer Sprachausgabe optimiert.","Der Editor wird nie für die Verwendung mit einer Sprachausgabe optimiert. ","Steuert, ob der Editor in einem Modus ausgeführt werden soll, in dem er für die Sprachausgabe optimiert wird.","Controls fading out of unused code.","Steuert, ob der Editor Links erkennen und anklickbar machen soll","Steuert, ob der Editor die Inline-Farbdecorators und die Farbauswahl rendern soll.",'Ermöglicht die Code-Aktion "lightbulb"',"Ein Organisieren der Importe beim Speichern ausführen?","Arten von Codeaktionen, die beim Speichern ausgeführt werden sollen.","Timeout für Codeaktionen, die beim Speichern ausgeführt werden.","Steuert, ob die primäre Linux-Zwischenablage unterstützt werden soll.","Steuert, ob der Diff-Editor das Diff nebeneinander oder inline anzeigt.","Steuert, ob der Diff-Editor Änderungen in führenden oder nachgestellten Leerzeichen als Diffs anzeigt.","Spezielle Behandlung für große Dateien zum Deaktivieren bestimmter speicherintensiver Funktionen.",'Steuert, ob der Diff-Editor die Indikatoren "+" und "-" für hinzugefügte/entfernte Änderungen anzeigt.'], +"vs/editor/common/config/editorOptions":["Der Editor ist zurzeit nicht verfügbar. Drücken Sie Alt+F1 für Optionen.","Editor-Inhalt"],"vs/editor/common/controller/cursor":["Unerwartete Ausnahme beim Ausführen des Befehls."],"vs/editor/common/modes/modesRegistry":["Nur-Text"],"vs/editor/common/services/modelServiceImpl":["[{0}]\n{1}","[{0}] {1}"], +"vs/editor/common/view/editorColorRegistry":["Hintergrundfarbe zur Hervorhebung der Zeile an der Cursorposition.","Hintergrundfarbe für den Rahmen um die Zeile an der Cursorposition.","Hintergrundfarbe hervorgehobener Bereiche, beispielsweise durch Features wie Quick Open und Suche. Die Farbe muss durchsichtig sein, um dahinterliegende Dekorationen nicht zu verbergen. ","Hintergrundfarbe für den Rahmen um hervorgehobene Bereiche.","Farbe des Cursors im Editor.","Hintergrundfarbe vom Editor-Cursor. Erlaubt die Anpassung der Farbe von einem Zeichen, welches von einem Block-Cursor überdeckt wird.","Farbe der Leerzeichen im Editor.","Farbe der Führungslinien für Einzüge im Editor.","Farbe der Führungslinien für Einzüge im aktiven Editor.","Zeilennummernfarbe im Editor.","Zeilennummernfarbe der aktiven Editorzeile.",'ID ist veraltet. Verwenden Sie stattdessen "editorLineNumber.activeForeground".',"Zeilennummernfarbe der aktiven Editorzeile.","Farbe des Editor-Lineals.","Vordergrundfarbe der CodeLens-Links im Editor","Hintergrundfarbe für zusammengehörige Klammern","Farbe für zusammengehörige Klammern","Farbe des Rahmens für das Übersicht-Lineal.","Hintergrundfarbe der Editorleiste. Die Leiste enthält die Glyphenränder und die Zeilennummern.","Vordergrundfarbe von Fehlerunterstreichungen im Editor.","Rahmenfarbe von Fehlerunterstreichungen im Editor.","Vordergrundfarbe von Warnungsunterstreichungen im Editor.","Rahmenfarbe von Warnungsunterstreichungen im Editor.","Vordergrundfarbe von Informationsunterstreichungen im Editor.","Rahmenfarbe von Informationsunterstreichungen im Editor.","Vordergrundfarbe der Hinweisunterstreichungen im Editor.","Rahmenfarbe der Hinweisunterstreichungen im Editor.","Border of unnecessary code in the editor.","Opacity of unnecessary code in the editor.","Übersichtslineal-Markierungsfarbe für Fehler.","Übersichtslineal-Markierungsfarbe für Warnungen.","Übersichtslineal-Markierungsfarbe für Informationen."], +"vs/editor/contrib/bracketMatching/bracketMatching":["Übersichtslineal-Markierungsfarbe für zusammengehörige Klammern.","Gehe zu Klammer","Auswählen bis Klammer"],"vs/editor/contrib/caretOperations/caretOperations":["Caretzeichen nach links verschieben","Caretzeichen nach rechts verschieben"],"vs/editor/contrib/caretOperations/transpose":["Buchstaben austauschen"],"vs/editor/contrib/clipboard/clipboard":["Ausschneiden","Cu&&t","Kopieren","&&Copy","Einfügen","&&Paste","Mit Syntaxhervorhebung kopieren"],"vs/editor/contrib/codeAction/codeActionCommands":["Korrekturen anzeigen ({0})","Korrekturen anzeigen","Schnelle Problembehebung …","Keine Codeaktionen verfügbar","Keine Codeaktionen verfügbar","Refactoring durchführen...","Keine Refactorings verfügbar","Quellaktion…","Keine Quellaktionen verfügbar","Importe organisieren","Keine Aktion zum Organisieren von Importen verfügbar"], +"vs/editor/contrib/comment/comment":["Zeilenkommentar umschalten","&&Toggle Line Comment","Zeilenkommentar hinzufügen","Zeilenkommentar entfernen","Blockkommentar umschalten","Toggle &&Block Comment"],"vs/editor/contrib/contextmenu/contextmenu":["Editor-Kontextmenü anzeigen"],"vs/editor/contrib/cursorUndo/cursorUndo":["Soft Undo"],"vs/editor/contrib/find/findController":["Suchen","&&Find","Mit Auswahl suchen","Nächstes Element suchen","Vorheriges Element suchen","Nächste Auswahl suchen","Vorherige Auswahl suchen","Ersetzen","&&Replace"],"vs/editor/contrib/find/findWidget":["Suchen","Suchen","Vorherige Übereinstimmung","Nächste Übereinstimmung","In Auswahl suchen","Schließen","Ersetzen","Ersetzen","Ersetzen","Alle ersetzen","Ersetzen-Modus wechseln","Nur die ersten {0} Ergebnisse wurden hervorgehoben, aber alle Suchoperationen werden auf dem gesamten Text durchgeführt.","{0} von {1}","Keine Ergebnisse"], +"vs/editor/contrib/folding/folding":["Auffalten","Faltung rekursiv aufheben","Falten","Rekursiv falten","Alle Blockkommentare falten","Alle Regionen falten","Alle Regionen auffalten","Alle falten","Alle auffalten","Faltebene {0}"],"vs/editor/contrib/fontZoom/fontZoom":["Editorschriftart vergrößern","Editorschriftart verkleinern","Editor Schriftart Vergrößerung zurücksetzen"],"vs/editor/contrib/format/formatActions":["1 Formatierung in Zeile {0} vorgenommen","{0} Formatierungen in Zeile {1} vorgenommen","1 Formatierung zwischen Zeilen {0} und {1} vorgenommen","{0} Formatierungen zwischen Zeilen {1} und {2} vorgenommen",'Es ist kein Formatierer für "{0}"-Dateien installiert. ',"Dokument formatieren",'Es ist kein Dokumentformatierer für "{0}"-Dateien installiert.',"Auswahl formatieren",'Es ist kein Auswahl-Formatierer für "{0}"-Dateien installiert. '], +"vs/editor/contrib/goToDefinition/goToDefinitionCommands":['Keine Definition gefunden für "{0}".',"Keine Definition gefunden"," – {0} Definitionen","Gehe zu Definition","Definition an der Seite öffnen","Peek-Definition",'Keine Implementierung gefunden für "{0}"',"Keine Implementierung gefunden","{0} Implementierungen","Zur Implementierung wechseln","Vorschau der Implementierung anzeigen",'Keine Typendefinition gefunden für "{0}"',"Keine Typendefinition gefunden","{0} Typdefinitionen","Zur Typdefinition wechseln","Vorschau der Typdefinition anzeigen"],"vs/editor/contrib/goToDefinition/goToDefinitionMouse":["Klicken Sie, um {0} Definitionen anzuzeigen."],"vs/editor/contrib/gotoError/gotoError":["Gehe zu nächstem Problem (Fehler, Warnung, Information)","Gehe zu vorigem Problem (Fehler, Warnung, Information)","Gehe zu dem nächsten Problem in den Dateien (Fehler, Warnung, Info) ","Gehe zu dem vorherigen Problem in den Dateien (Fehler, Warnung, Info) "], +"vs/editor/contrib/gotoError/gotoErrorWidget":["({0}/{1})","Editormarkierung: Farbe bei Fehler des Navigationswidgets.","Editormarkierung: Farbe bei Warnung des Navigationswidgets.","Editormarkierung: Farbe bei Warnung des Navigationswidgets.","Editormarkierung: Hintergrund des Navigationswidgets."],"vs/editor/contrib/hover/hover":["Hovern anzeigen"],"vs/editor/contrib/hover/modesContentHover":["Wird geladen..."],"vs/editor/contrib/inPlaceReplace/inPlaceReplace":["Durch vorherigen Wert ersetzen","Durch nächsten Wert ersetzen"], +"vs/editor/contrib/linesOperations/linesOperations":["Zeile nach oben kopieren","&&Copy Line Up","Zeile nach unten kopieren","Co&&py Line Down","Zeile nach oben verschieben","Mo&&ve Line Up","Zeile nach unten verschieben","Move &&Line Down","Zeilen aufsteigend sortieren","Zeilen absteigend sortieren","Nachgestelltes Leerzeichen kürzen","Zeile löschen","Zeileneinzug","Zeile ausrücken","Zeile oben einfügen","Zeile unten einfügen","Alle übrigen löschen","Alle rechts löschen","Zeilen verknüpfen","Zeichen um den Cursor herum transponieren","In Großbuchstaben umwandeln","In Kleinbuchstaben umwandeln"], +"vs/editor/contrib/links/links":["BEFEHLSTASTE + Mausklick zum Aufrufen des Links","STRG + Mausklick zum Aufrufen des Links","Cmd + Klick um Befehl auszuführen","Ctrl + Klick um Befehl auszuführen.","WAHLTASTE + Klicken, um Link zu folgen","ALT + Mausklick zum Aufrufen des Links","WAHLTASTE + Klicken, um Befehl auszuführen","Alt + Klick um Befehl auszuführen.","Fehler beim Öffnen dieses Links, weil er nicht wohlgeformt ist: {0}","Fehler beim Öffnen dieses Links, weil das Ziel fehlt.","Link öffnen"],"vs/editor/contrib/message/messageController":["Ein Bearbeiten ist im schreibgeschützten Editor nicht möglich"], +"vs/editor/contrib/multicursor/multicursor":["Cursor oberhalb hinzufügen","&&Add Cursor Above","Cursor unterhalb hinzufügen","A&&dd Cursor Below","Cursor an Zeilenenden hinzufügen","Add C&&ursors to Line Ends","Auswahl zur nächsten Übereinstimmungssuche hinzufügen","Add &&Next Occurrence","Letzte Auswahl zu vorheriger Übereinstimmungssuche hinzufügen","Add P&&revious Occurrence","Letzte Auswahl in nächste Übereinstimmungssuche verschieben","Letzte Auswahl in vorherige Übereinstimmungssuche verschieben","Alle Vorkommen auswählen und Übereinstimmung suchen","Select All &&Occurrences","Alle Vorkommen ändern"],"vs/editor/contrib/parameterHints/parameterHints":["Parameterhinweise auslösen"],"vs/editor/contrib/parameterHints/parameterHintsWidget":["{0}, Hinweis"],"vs/editor/contrib/referenceSearch/peekViewWidget":["Schließen"],"vs/editor/contrib/referenceSearch/referenceSearch":[" – {0} Verweise","Alle Verweise suchen"],"vs/editor/contrib/referenceSearch/referencesController":["Wird geladen..."], +"vs/editor/contrib/referenceSearch/referencesModel":["Symbol in {0} in Zeile {1}, Spalte {2}","1 Symbol in {0}, vollständiger Pfad {1}","{0} Symbole in {1}, vollständiger Pfad {2}","Es wurden keine Ergebnisse gefunden.","1 Symbol in {0} gefunden","{0} Symbole in {1} gefunden","{0} Symbole in {1} Dateien gefunden"], +"vs/editor/contrib/referenceSearch/referencesWidget":["Fehler beim Auflösen der Datei.","{0} Verweise","{0} Verweis","Keine Vorschau verfügbar.","Verweise","Keine Ergebnisse","Verweise","Hintergrundfarbe des Titelbereichs der Peek-Ansicht.","Farbe des Titels in der Peek-Ansicht.","Farbe der Titelinformationen in der Peek-Ansicht.","Farbe der Peek-Ansichtsränder und des Pfeils.","Hintergrundfarbe der Ergebnisliste in der Peek-Ansicht.","Vordergrundfarbe für Zeilenknoten in der Ergebnisliste der Peek-Ansicht.","Vordergrundfarbe für Dateiknoten in der Ergebnisliste der Peek-Ansicht.","Hintergrundfarbe des ausgewählten Eintrags in der Ergebnisliste der Peek-Ansicht.","Vordergrundfarbe des ausgewählten Eintrags in der Ergebnisliste der Peek-Ansicht.","Hintergrundfarbe des Peek-Editors.","Hintergrundfarbe der Leiste im Peek-Editor.","Farbe für Übereinstimmungsmarkierungen in der Ergebnisliste der Peek-Ansicht.","Farbe für Übereinstimmungsmarkierungen im Peek-Editor.","Rahmen für Übereinstimmungsmarkierungen im Peek-Editor."], +"vs/editor/contrib/rename/rename":["Kein Ergebnis.",'"{0}" erfolgreich in "{1}" umbenannt. Zusammenfassung: {2}',"Fehler beim Ausführen der Umbenennung.","Symbol umbenennen"],"vs/editor/contrib/rename/renameInputField":["Benennen Sie die Eingabe um. Geben Sie einen neuen Namen ein, und drücken Sie die EINGABETASTE, um den Commit auszuführen."],"vs/editor/contrib/smartSelect/smartSelect":["Auswahl erweitern","&&Expand Selection","Auswahl verkleinern","&&Shrink Selection"],"vs/editor/contrib/snippet/snippetVariables":["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","So","Mo","Di","Mi","Do","Fr","Sa","Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember","Jan","Feb","Mar","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],"vs/editor/contrib/suggest/suggestController":['Durch Annahme von "{0}" wurde folgender Text eingefügt: {1}',"Vorschlag auslösen"], +"vs/editor/contrib/suggest/suggestWidget":["Hintergrundfarbe des Vorschlagswidgets.","Rahmenfarbe des Vorschlagswidgets.","Vordergrundfarbe des Vorschlagswidgets.","Hintergrundfarbe des ausgewählten Eintrags im Vorschlagswidget.","Farbe der Trefferhervorhebung im Vorschlagswidget.","Mehr anzeigen...{0}","{0}, Vorschlag, hat Details","{0}, Vorschlag","Weniger anzeigen...{0}","Wird geladen...","Keine Vorschläge.","{0}, angenommen","{0}, Vorschlag, hat Details","{0}, Vorschlag"],"vs/editor/contrib/toggleTabFocusMode/toggleTabFocusMode":["TAB-Umschalttaste verschiebt Fokus"], +"vs/editor/contrib/wordHighlighter/wordHighlighter":["Hintergrundfarbe eines Symbols bei Lesezugriff, beispielsweise dem Lesen einer Variable. Die Farbe muss durchsichtig sein, um nicht dahinterliegende Dekorationen zu verbergen.","Hintergrundfarbe eines Symbols bei Schreibzugriff, beispielsweise dem Schreiben einer Variable. Die Farbe muss durchsichtig sein, um nicht dahinterliegende Dekorationen zu verbergen.","Randfarbe eines Symbols beim Lesezugriff, wie etwa beim Lesen einer Variablen.","Randfarbe eines Symbols beim Schreibzugriff, wie etwa beim Schreiben einer Variablen.","Übersichtslineal-Markierungsfarbe für Symbolhervorhebungen. Die Farbe muss durchsichtig sein, um dahinterliegende Dekorationen nicht zu verbergen.","Übersichtslineal-Markierungsfarbe für Schreibzugriffs-Symbolhervorhebungen. Die Farbe muss durchsichtig sein, um dahinterliegende Dekorationen nicht zu verbergen.","Gehe zur nächsten Symbolhervorhebungen","Gehe zur vorherigen Symbolhervorhebungen"], +"vs/editor/standalone/browser/accessibilityHelp/accessibilityHelp":["No selection","Line {0}, Column {1} ({2} selected)","Line {0}, Column {1}","{0} selections ({1} characters selected)","{0} selections","Now changing the setting `accessibilitySupport` to 'on'.","Now opening the Editor Accessibility documentation page."," in a read-only pane of a diff editor."," in a pane of a diff editor."," in a read-only code editor"," in a code editor","To configure the editor to be optimized for usage with a Screen Reader press Command+E now.","To configure the editor to be optimized for usage with a Screen Reader press Control+E now.","The editor is configured to be optimized for usage with a Screen Reader.","The editor is configured to never be optimized for usage with a Screen Reader, which is not the case at this time.","Pressing Tab in the current editor will move focus to the next focusable element. Toggle this behavior by pressing {0}.","Pressing Tab in the current editor will move focus to the next focusable element. The command {0} is currently not triggerable by a keybinding.","Pressing Tab in the current editor will insert the tab character. Toggle this behavior by pressing {0}.","Pressing Tab in the current editor will insert the tab character. The command {0} is currently not triggerable by a keybinding.","Press Command+H now to open a browser window with more information related to editor accessibility.","Press Control+H now to open a browser window with more information related to editor accessibility.","You can dismiss this tooltip and return to the editor by pressing Escape or Shift+Escape.","Show Accessibility Help"], +"vs/editor/standalone/browser/inspectTokens/inspectTokens":["Developer: Inspect Tokens"],"vs/editor/standalone/browser/quickOpen/gotoLine":["Go to line {0} and character {1}","Go to line {0}","Type a line number between 1 and {0} to navigate to","Type a character between 1 and {0} to navigate to","Go to line {0}","Type a line number, followed by an optional colon and a character number to navigate to","Go to Line..."],"vs/editor/standalone/browser/quickOpen/quickCommand":["{0}, commands","Type the name of an action you want to execute","Command Palette"],"vs/editor/standalone/browser/quickOpen/quickOutline":["{0}, symbols","Type the name of an identifier you wish to navigate to","Go to Symbol...","symbols ({0})","modules ({0})","classes ({0})","interfaces ({0})","methods ({0})","functions ({0})","properties ({0})","variables ({0})","variables ({0})","constructors ({0})","calls ({0})"],"vs/editor/standalone/browser/simpleServices":["Made {0} edits in {1} files"], +"vs/editor/standalone/browser/standaloneCodeEditor":["Editor content","Press Ctrl+F1 for Accessibility Options.","Press Alt+F1 for Accessibility Options."],"vs/editor/standalone/browser/toggleHighContrast/toggleHighContrast":["Toggle High Contrast Theme"],"vs/platform/configuration/common/configurationRegistry":["Standard-Konfiguration überschreibt","Zu überschreibende Einstellungen für Sprache {0} konfigurieren.","Zu überschreibende Editor-Einstellungen für eine Sprache konfigurieren.",'"{0}" kann nicht registriert werden. Die Eigenschaft stimmt mit dem Eigenschaftsmuster \'\\\\[.*\\\\]$\' zum Beschreiben sprachspezifischer Editor-Einstellungen überein. Verwenden Sie den Beitrag "configurationDefaults".','"{0}" kann nicht registriert werden. Diese Eigenschaft ist bereits registriert.'],"vs/platform/keybinding/common/abstractKeybindingService":["({0}) wurde gedrückt. Es wird auf die zweite Taste der Kombination gewartet...","Die Tastenkombination ({0}, {1}) ist kein Befehl."], +"vs/platform/list/browser/listService":["Workbench",'Ist unter Windows und Linux der Taste "STRG" und unter macOSX der Befehlstaste zugeordnet.','Ist unter Windows und Linux der Taste "Alt" und unter macOSX der Wahltaste zugeordnet. ','Der Modifizierer zum Hinzufügen eines Elements in Bäumen und Listen zu einer Mehrfachauswahl mit der Maus (zum Beispiel im Explorer, in geöffneten Editoren und in der SCM-Ansicht). "ctrlCmd" wird unter Windows und Linux der Taste "STRG" und unter macOSX der Befehlstaste zugeordnet. Die Mausbewegung "Seitlich öffnen" wird – sofern unterstützt – so angepasst, dass kein Konflikt mit dem Modifizierer zur Mehrfachauswahl entsteht.','Steuert, wie Elemente in Bäumen und Listen mithilfe der Maus geöffnet werden (sofern unterstützt). Legen Sie "singleClick" fest, um Elemente mit einem einzelnen Mausklick zu öffnen, und "doubleClick", damit sie nur mit einem doppelten Mausklick geöffnet werden. Bei übergeordneten Elementen, deren untergeordnete Elemente sich in Bäumen befinden, steuert diese Einstellung, ob ein Einfachklick oder ein Doppelklick das übergeordnete Elemente erweitert. Beachten Sie, dass einige Bäume und Listen diese Einstellung ggf. ignorieren, wenn sie nicht zutrifft.',"Steuert, ob Bäume horizontales Scrollen in der Workbench unterstützen."], +"vs/platform/markers/common/markers":["Fehler","Warnung","Info"], +"vs/platform/theme/common/colorRegistry":["In der Workbench verwendete Farben.","Allgemeine Vordergrundfarbe. Diese Farbe wird nur verwendet, wenn sie nicht durch eine Komponente überschrieben wird.","Allgemeine Vordergrundfarbe. Diese Farbe wird nur verwendet, wenn sie nicht durch eine Komponente überschrieben wird.","Allgemeine Rahmenfarbe für fokussierte Elemente. Diese Farbe wird nur verwendet, wenn sie nicht durch eine Komponente überschrieben wird.","Ein zusätzlicher Rahmen um Elemente, mit dem diese von anderen getrennt werden, um einen größeren Kontrast zu erreichen.","Ein zusätzlicher Rahmen um aktive Elemente, mit dem diese von anderen getrennt werden, um einen größeren Kontrast zu erreichen.","Vordergrundfarbe für Links im Text.","Hintergrundfarbe für Code-Blöcke im Text.","Schattenfarbe von Widgets wie zum Beispiel Suchen/Ersetzen innerhalb des Editors.","Hintergrund für Eingabefeld.","Vordergrund für Eingabefeld.","Rahmen für Eingabefeld.","Rahmenfarbe für aktivierte Optionen in Eingabefeldern.","Hintergrundfarbe bei der Eingabevalidierung für den Schweregrad der Information.","Rahmenfarbe bei der Eingabevalidierung für den Schweregrad der Information.","Hintergrundfarbe bei der Eingabevalidierung für den Schweregrad der Warnung.","Rahmenfarbe bei der Eingabevalidierung für den Schweregrad der Warnung.","Hintergrundfarbe bei der Eingabevalidierung für den Schweregrad des Fehlers.","Rahmenfarbe bei der Eingabevalidierung für den Schweregrad des Fehlers.","Hintergrundfarbe der Liste/Struktur für das fokussierte Element, wenn die Liste/Struktur aktiv ist. Eine aktive Liste/Struktur hat Tastaturfokus, eine inaktive hingegen nicht.","Vordergrundfarbe der Liste/Struktur für das fokussierte Element, wenn die Liste/Struktur aktiv ist. Eine aktive Liste/Struktur hat Tastaturfokus, eine inaktive hingegen nicht.","Hintergrundfarbe der Liste/Struktur für das ausgewählte Element, wenn die Liste/Struktur aktiv ist. Eine aktive Liste/Struktur hat Tastaturfokus, eine inaktive hingegen nicht.","Vordergrundfarbe der Liste/Struktur für das ausgewählte Element, wenn die Liste/Struktur aktiv ist. Eine aktive Liste/Struktur hat Tastaturfokus, eine inaktive hingegen nicht.","Hintergrundfarbe der Liste/Struktur für das ausgewählte Element, wenn die Liste/Struktur inaktiv ist. Eine aktive Liste/Struktur hat Tastaturfokus, eine inaktive hingegen nicht.","Liste/Baumstruktur - Vordergrundfarbe für das ausgewählte Element, wenn die Liste/Baumstruktur inaktiv ist. Eine aktive Liste/Baumstruktur hat Tastaturfokus, eine inaktive hingegen nicht.","List/Tree background color for the focused item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.","Hintergrund der Liste/Struktur, wenn mit der Maus auf Elemente gezeigt wird.","Vordergrund der Liste/Struktur, wenn mit der Maus auf Elemente gezeigt wird.","Drag & Drop-Hintergrund der Liste/Struktur, wenn Elemente mithilfe der Maus verschoben werden.","Vordergrundfarbe der Liste/Struktur zur Trefferhervorhebung beim Suchen innerhalb der Liste/Struktur.","Schnellauswahlfarbe für das Gruppieren von Bezeichnungen.","Schnellauswahlfarbe für das Gruppieren von Rahmen.","Badge - Hintergrundfarbe. Badges sind kurze Info-Texte, z. B. für Anzahl Suchergebnisse.","Badge - Vordergrundfarbe. Badges sind kurze Info-Texte, z. B. für Anzahl Suchergebnisse.","Schatten der Scrollleiste, um anzuzeigen, dass die Ansicht gescrollt wird.","Hintergrundfarbe vom Scrollbar-Schieber","Hintergrundfarbe des Schiebereglers, wenn darauf gezeigt wird.","Hintergrundfarbe des Schiebereglers, wenn darauf geklickt wird.","Hintergrundfarbe des Fortschrittbalkens, der für lang ausgeführte Vorgänge angezeigt werden kann.","Hintergrundfarbe des Editors.","Standardvordergrundfarbe des Editors.","Hintergrundfarbe von Editor-Widgets wie zum Beispiel Suchen/Ersetzen.","Rahmenfarbe von Editorwigdets. Die Farbe wird nur verwendet, wenn für das Widget ein Rahmen verwendet wird und die Farbe nicht von einem Widget überschrieben wird.","Border color of the resize bar of editor widgets. The color is only used if the widget chooses to have a resize border and if the color is not overridden by a widget.","Farbe der Editor-Auswahl.","Farbe des gewählten Text für einen hohen Kontrast","Farbe der Auswahl in einem inaktiven Editor. Die Farbe muss durchsichtig sein, um dahinterliegende Dekorationen nicht zu verbergen. ","Farbe für Bereiche, deren Inhalt der Auswahl entspricht. Die Farbe muss durchsichtig sein, um dahinterliegende Dekorationen nicht zu verbergen.","Randfarbe für Bereiche, deren Inhalt der Auswahl entspricht.","Farbe des aktuellen Suchergebnisses.","Farbe der anderen Suchergebnisse. Die Farbe muss durchsichtig sein, um dahinterliegende Dekorationen nicht zu verbergen. ","Farbe des Bereichs zur Einschränkung der Suche. Die Farbe muss durchsichtig sein, um dahinterliegende Dekorationen nicht zu verbergen.","Randfarbe des aktuellen Suchergebnisses.","Randfarbe der anderen Suchtreffer.","Rahmenfarbe des Bereichs zur Einschränkung der Suche. Die Farbe muss durchsichtig sein, um dahinterliegende Dekorationen nicht zu verbergen.","Hervorhebung eines Worts, unter dem ein Mauszeiger angezeigt wird. Die Farbe muss durchsichtig sein, um dahinterliegende Dekorationen nicht zu verbergen. ","Background color of the editor hover.","Rahmenfarbe des Editor-Mauszeigers.","Farbe der aktiven Links.","Hintergrundfarbe für eingefügten Text. Die Farbe muss durchsichtig sein, um dahinterliegende Dekorationen nicht zu verbergen. ","Hintergrundfarbe für entfernten Text. Die Farbe muss durchsichtig sein, um dahinterliegende Dekorationen nicht zu verbergen. ","Konturfarbe für eingefügten Text.","Konturfarbe für entfernten Text.","Border color between the two text editors.","Übersichtslineal-Markierungsfarbe für Suchübereinstimmungen. Die Farbe muss durchsichtig sein, um dahinterliegende Dekorationen nicht zu verbergen.","Übersichtslineal-Markierungsfarbe für Auswahlhervorhebungen. Die Farbe muss durchsichtig sein, um dahinterliegende Dekorationen nicht zu verbergen."] +}); +//# sourceMappingURL=../../../min-maps/vs/editor/editor.main.nls.de.js.map \ No newline at end of file diff --git a/app/monaco-editor/min/vs/editor/editor.main.nls.es.js b/app/monaco-editor/min/vs/editor/editor.main.nls.es.js new file mode 100644 index 00000000..8a44a869 --- /dev/null +++ b/app/monaco-editor/min/vs/editor/editor.main.nls.es.js @@ -0,0 +1,32 @@ +/*!----------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.14.6(6c8f02b41db9ae5c4d15df767d47755e5c73b9d5) + * Released under the MIT license + * https://github.com/Microsoft/vscode/blob/master/LICENSE.txt + *-----------------------------------------------------------*/ +define("vs/editor/editor.main.nls.es",{"vs/base/browser/ui/actionbar/actionbar":["{0} ({1})"],"vs/base/browser/ui/aria/aria":["{0} (ocurrió de nuevo)","{0} (occurred {1} times)"],"vs/base/browser/ui/findinput/findInput":["entrada"],"vs/base/browser/ui/findinput/findInputCheckboxes":["Coincidir mayúsculas y minúsculas","Solo palabras completas","Usar expresión regular"],"vs/base/browser/ui/inputbox/inputBox":["Error: {0}","Advertencia: {0}","Información: {0}"],"vs/base/browser/ui/list/listWidget":["{0}. Use the navigation keys to navigate."],"vs/base/browser/ui/menu/menu":["{0} ({1})"],"vs/base/common/keybindingLabels":["Ctrl","Mayús","Alt","Windows","Ctrl","Mayús","Alt","Super","Control","Mayús","Alt","Comando","Control","Mayús","Alt","Windows","Control","Mayús","Alt","Super"],"vs/base/common/severity":["Error","Advertencia","Información"],"vs/base/parts/quickopen/browser/quickOpenModel":["{0}, selector","selector"], +"vs/base/parts/quickopen/browser/quickOpenWidget":["Selector rápido. Escriba para restringir los resultados.","Selector rápido","{0} Results"],"vs/editor/browser/controller/coreCommands":["&&Select All","&&Undo","&&Redo"],"vs/editor/browser/widget/codeEditorWidget":["El número de cursores se ha limitado a {0}."],"vs/editor/browser/widget/diffEditorWidget":["Los archivos no se pueden comparar porque uno de ellos es demasiado grande."],"vs/editor/browser/widget/diffReview":["Cerrar","sin líneas","1 línea","{0} líneas","Diferencia {0} de {1}: original {2}, {3}, modificado {4}, {5}","vacío","original {0}, modificado {1}: {2}","+ modificado {0}: {1}","- original {0}: {1}","Ir a la siguiente diferencia","Ir a la diferencia anterior"], +"vs/editor/common/config/commonEditorConfig":["Editor","Controla la familia de fuentes.","Controla el grosor de la fuente.","Controla el tamaño de fuente en píxeles.","Controla la altura de línea. Utilice 0 para calcular el valor de lineHeight a partir de fontSize.","Controla el espacio entre letras en pixels.","Los números de línea no se muestran.","Los números de línea se muestran como un número absoluto.","Los números de línea se muestran como distancia en líneas a la posición del cursor.","Los números de línea se muestran cada 10 líneas.","Controla la visualización de los números de línea.","Representar reglas verticales después de un cierto número de caracteres monoespacio. Usar multiples valores para multiples reglas. No se dibuja ninguna regla si la matriz esta vacía.","Caracteres que se usarán como separadores de palabras al realizar operaciones o navegaciones relacionadas con palabras.","El número de espacios a los que equivale una tabulación. Este valor se invalida según el contenido del archivo cuando `editor.detectIndentation` está activado.",'Se esperaba "number". Tenga en cuenta que el ajuste "editor.detectIndentation" ha reemplazado al valor "auto".','Insertar espacios al presionar TAB. Este valor se invalida en función del contenido del archivo cuando "editor.detectIndentation" está activado.','Se esperaba "boolean". Tenga en cuenta que el ajuste "editor.detectIndentation" ha reemplazado al valor "auto".',"Al abrir un archivo, se detectarán `editor.tabSize` y `editor.insertSpaces` en función del contenido del archivo.","Controla si las selecciones tienen esquinas redondeadas","Controla si el editor se seguirá desplazando después de la última línea","Controla el número de caracteres adicionales a partir del cual el editor se desplazará horizontalmente","Controla si el editor se desplaza con una animación","Controla si se muestra el minimapa","Controla en qué lado se muestra el minimapa.","Controla si el control deslizante del minimapa es ocultado automáticamente.","Presentar los caracteres reales en una línea (por oposición a bloques de color)","Limitar el ancho del minimapa para presentar como mucho un número de columnas determinado","Controls whether the hover is shown.","Time delay in milliseconds after which to the hover is shown.","Controls whether the hover should remain visible when mouse is moved over it.","Controla si se inicializa la cadena de búsqueda en Buscar widget en la selección del editor","Controla si el indicador Buscar en selección se activa cuando se seleccionan varios caracteres o líneas de texto en el editor","Controla si el widget de búsqueda debería leer o modificar el portapapeles de busqueda compartido en macOS","Las líneas no se ajustarán nunca.","Las líneas se ajustarán en el ancho de la ventanilla.",'Las líneas se ajustarán en "editor.wordWrapColumn".','Las líneas se ajustarán al valor que sea inferior: el tamaño de la ventanilla o el valor de "editor.wordWrapColumn".','Controla cómo se deben ajustar las líneas. Pueden ser:\n - "off" (deshabilitar ajuste),\n - "on" (ajuste de ventanilla),\n - "wordWrapColumn" (ajustar en "editor.wordWrapColumn") o\n - "bounded" (ajustar en la parte mínima de la ventanilla y "editor.wordWrapColumn").',"Controls the wrapping column of the editor when `editor.wordWrap` is 'wordWrapColumn' or 'bounded'.","No indentation. Wrapped lines begin at column 1.","Wrapped lines get the same indentation as the parent.","Wrapped lines get +1 indentation toward the parent.","Wrapped lines get +2 indentation toward the parent.","Controla el sangrado de las líneas ajustadas. Puede ser uno de 'none', ' same ', ' indent' o ' deepIndent '.","Se utilizará un multiplicador en los eventos de desplazamiento de la rueda del mouse `deltaX` y `deltaY`",'Se asigna a "Control" en Windows y Linux y a "Comando" en macOS.','Se asigna a "Alt" en Windows y Linux y a "Opción" en macOS.','El modificador que se usará para agregar varios cursores con el mouse. "ctrlCmd" se asigna a "Control" en Windows y Linux y a "Comando" en macOS. Los gestos del mouse "Ir a la definición" y "Abrir vínculo" se adaptarán de modo que no entren en conflicto con el modificador multicurso',"Combinar varios cursores cuando se solapan.","Habilita sugerencias rápidas en las cadenas.","Habilita sugerencias rápidas en los comentarios.","Habilita sugerencias rápidas fuera de las cadenas y los comentarios.","Controla si las sugerencias deben mostrarse automáticamente mientras se escribe","Controla el retardo en ms tras el cual aparecerán sugerencias rápidas","Habilita el desplegable que muestra documentación de los parámetros e información de los tipos mientras escribe","Controla si el editor debe cerrar automáticamente los corchetes después de abrirlos","Controla si el editor debe dar formato automáticamente a la línea después de escribirla","Controla si el editor debe formatear automáticamente el contenido pegado. Debe haber disponible un formateador capaz de aplicar formato a un intervalo dentro de un documento.","Controla si el editor debería ajustar automáticamente la sangría cuando los usuarios escriben, pegan o mueven líneas. Las reglas de sangría del idioma deben estar disponibles","Controla si las sugerencias deben aparecer de forma automática al escribir caracteres desencadenadores","Only accept a suggestion with `Enter` when it makes a textual change.",'Controla si las sugerencias deben aceptarse en "Entrar" (además de "TAB"). Ayuda a evitar la ambigüedad entre insertar nuevas líneas o aceptar sugerencias. El valor "smart" significa que solo se acepta una sugerencia con Entrar cuando se realiza un cambio textual.','Controla si se deben aceptar sugerencias en los caracteres de confirmación. Por ejemplo, en Javascript, el punto y coma (";") puede ser un carácter de confirmación que acepta una sugerencia y escribe ese carácter.',"Mostrar sugerencias de fragmentos de código por encima de otras sugerencias.","Mostrar sugerencias de fragmentos de código por debajo de otras sugerencias.","Mostrar sugerencias de fragmentos de código con otras sugerencias.","No mostrar sugerencias de fragmentos de código.","Controla si se muestran los fragmentos de código con otras sugerencias y cómo se ordenan.","Controla si al copiar sin selección se copia la línea actual.","Habilita sugerencias basadas en palabras.","Siempre seleccione la primera sugerencia.","Seleccione sugerencias recientes a menos que escriba una nueva opción, por ejemplo ' Console. | -> Console. log ' porque ' log ' se ha completado recientemente.","Seleccione sugerencias basadas en prefijos anteriores que han completado esas sugerencias, por ejemplo, ' Co-> Console ' y ' con-> const '.","Controla cómo se preseleccionan las sugerencias cuando se muestra la lista,","Tamaño de fuente para el widget de sugerencias","Alto de línea para el widget de sugerencias","Controls whether filtering and sorting suggestions accounts for small typos.","Control whether an active snippet prevents quick suggestions.","Controla si el editor debería destacar coincidencias similares a la selección","Controla si el editor debe resaltar los símbolos semánticos.","Controla el número de decoraciones que pueden aparecer en la misma posición en la regla de visión general","Controla si debe dibujarse un borde alrededor de la regla de información general.","Controla el estilo de animación del cursor.","Ampliar la fuente del editor cuando se use la rueda del mouse mientras se presiona Ctrl",'Controla el estilo del cursor. Los valores aceptados son "block", "block-outline", "line", "line-thin", "underline" y "underline-thin"',"Controla el ancho del cursor cuando editor.cursorStyle se establece a 'line'","Habilita las ligaduras tipográficas.","Controla si el cursor debe ocultarse en la regla de visión general.","Render whitespace characters except for single spaces between words.",'Controla cómo debe representar el editor los espacios en blanco. Las posibilidades son "none", "boundary" y "all". La opción "boundary" no representa los espacios individuales entre palabras.',"Controla si el editor debe representar caracteres de control","Controla si el editor debe representar guías de sangría.","Controls whether the editor should highlight the active indent guide.","Highlights both the gutter and the current line.",'Controla cómo el editor debe presentar el resaltado de línea. Las posibilidades son "ninguno", "margen", "línea" y "todo".',"Controla si el editor muestra CodeLens","Controla si el editor tiene habilitado el plegado de código.","Controla la forma en que se calculan las gamas plegables. Las selecciones ' auto' utilizan una estrategia de plegado específica del idioma, si está disponible. 'Sangría' obliga a utilizar la estrategia de plegado con sangría.","Controla cuándo los controles de plegado del margen son ocultados automáticamente.","Resaltar corchetes coincidentes cuando se seleccione uno de ellos.","Controla si el editor debe representar el margen de glifo vertical. El margen de glifo se usa, principalmente, para depuración.","La inserción y eliminación del espacio en blanco sigue a las tabulaciones.","Quitar espacio en blanco final autoinsertado","Mantiene abierto el editor interactivo incluso al hacer doble clic en su contenido o presionar Escape.","Controla si el editor debe permitir mover selecciones mediante arrastrar y colocar.","El editor usará API de plataforma para detectar cuándo está conectado un lector de pantalla.","El editor se optimizará de forma permanente para su uso con un editor de pantalla.","El editor nunca se optimizará para su uso con un lector de pantalla.","Controla si el editor se debe ejecutar en un modo optimizado para lectores de pantalla.","Controls fading out of unused code.","Controla si el editor debe detectar enlaces y hacerlos cliqueables","Controla si el editor debe representar el Selector de colores y los elementos Decorator de color en línea.","Permite que el foco de acción del código","¿organizar importaciones en guardar?","Tipos de acción de código que se ejecutarán en guardar.","Tiempo de espera para ejecutar acciones de código en guardar.","Controla si el portapapeles principal de Linux debe admitirse.","Controla si el editor de diferencias muestra las diferencias en paralelo o alineadas.","Controla si el editor de diferencias muestra los cambios de espacio inicial o espacio final como diferencias.","Manejo especial para archivos grandes para desactivar ciertas funciones de memoria intensiva.","Controla si el editor de diff muestra indicadores +/- para cambios agregados/quitados"], +"vs/editor/common/config/editorOptions":["No se puede acceder al editor en este momento. Presione Alt+F1 para ver opciones.","Contenido del editor"],"vs/editor/common/controller/cursor":["Excepción inesperada al ejecutar el comando."],"vs/editor/common/modes/modesRegistry":["Texto sin formato"],"vs/editor/common/services/modelServiceImpl":["[{0}]\n{1}","[{0}] {1}"], +"vs/editor/common/view/editorColorRegistry":["Color de fondo para la línea resaltada en la posición del cursor.","Color de fondo del borde alrededor de la línea en la posición del cursor.","Color de fondo de los rangos resaltados, como por ejemplo las características de abrir rápidamente y encontrar. El color no debe ser opaco para no ocultar las decoraciones subyacentes.","Color de fondo del borde alrededor de los intervalos resaltados.","Color del cursor del editor.","Color de fondo del cursor de edición. Permite personalizar el color del caracter solapado por el bloque del cursor.","Color de los caracteres de espacio en blanco del editor.","Color de las guías de sangría del editor.","Color de las guías de sangría activas del editor.","Color de números de línea del editor.","Color del número de línea activa en el editor","ID es obsoleto. Usar en lugar 'editorLineNumber.activeForeground'. ","Color del número de línea activa en el editor","Color de las reglas del editor","Color principal de lentes de código en el editor","Color de fondo tras corchetes coincidentes","Color de bloques con corchetes coincidentes","Color del borde de la regla de visión general.","Color de fondo del margen del editor. Este espacio contiene los márgenes de glifos y los números de línea.","Color de primer plano de squigglies de error en el editor.","Color de borde de squigglies de error en el editor.","Color de primer plano de squigglies de advertencia en el editor.","Color de borde de squigglies de advertencia en el editor.","Color de primer plano de los subrayados ondulados informativos en el editor.","Color del borde de los subrayados ondulados informativos en el editor.","Color de primer plano de pista squigglies en el editor.","Color de borde de pista squigglies en el editor.","Border of unnecessary code in the editor.","Opacity of unnecessary code in the editor.","Color de marcador de regla de información general para errores. ","Color de marcador de regla de información general para advertencias.","Color de marcador de regla de información general para mensajes informativos. "], +"vs/editor/contrib/bracketMatching/bracketMatching":["Resumen color de marcador de regla para corchetes.","Ir al corchete","Seleccione esta opción para soporte"],"vs/editor/contrib/caretOperations/caretOperations":["Mover símbolo de inserción a la izquierda","Mover símbolo de inserción a la derecha"],"vs/editor/contrib/caretOperations/transpose":["Transponer letras"],"vs/editor/contrib/clipboard/clipboard":["Cortar","Cu&&t","Copiar","&&Copy","Pegar","&&Paste","Copiar con resaltado de sintaxis"],"vs/editor/contrib/codeAction/codeActionCommands":["Mostrar correcciones ({0})","Mostrar correcciones","Corrección Rápida","No hay acciones de código disponibles","No hay acciones de código disponibles","Refactorizar...","No hay refactorizaciones disponibles","Acción de Origen...","No hay acciones de origen disponibles","Organizar Importaciones","No hay acciones de importación disponibles"], +"vs/editor/contrib/comment/comment":["Alternar comentario de línea","&&Toggle Line Comment","Agregar comentario de línea","Quitar comentario de línea","Alternar comentario de bloque","Toggle &&Block Comment"],"vs/editor/contrib/contextmenu/contextmenu":["Mostrar menú contextual del editor"],"vs/editor/contrib/cursorUndo/cursorUndo":["Soft Undo"],"vs/editor/contrib/find/findController":["Buscar","&&Find","Buscar con selección","Buscar siguiente","Buscar anterior","Buscar selección siguiente","Buscar selección anterior","Reemplazar","&&Replace"],"vs/editor/contrib/find/findWidget":["Buscar","Buscar","Coincidencia anterior","Coincidencia siguiente","Buscar en selección","Cerrar","Reemplazar","Reemplazar","Reemplazar","Reemplazar todo","Alternar modo de reemplazar","Sólo los primeros {0} resultados son resaltados, pero todas las operaciones de búsqueda trabajan en todo el texto.","{0} de {1}","Sin resultados"], +"vs/editor/contrib/folding/folding":["Desplegar","Desplegar de forma recursiva","Plegar","Plegar de forma recursiva","Cerrar todos los comentarios de bloqueo","Plegar todas las regiones","Desplegar Todas las Regiones","Plegar todo","Desplegar todo","Nivel de plegamiento {0}"],"vs/editor/contrib/fontZoom/fontZoom":["Acercarse a la tipografía del editor","Alejarse de la tipografía del editor","Restablecer alejamiento de la tipografía del editor"],"vs/editor/contrib/format/formatActions":["1 edición de formato en la línea {0}","{0} ediciones de formato en la línea {1}","1 edición de formato entre las líneas {0} y {1}","{0} ediciones de formato entre las líneas {1} y {2}","No hay formateador para los archivos ' {0} ' instalados.","Dar formato al documento","No hay formateador de documentos para los archivos ' {0} ' instalados.","Dar formato a la selección","No hay formateador de selección para los archivos ' {0} ' instalados."], +"vs/editor/contrib/goToDefinition/goToDefinitionCommands":['No se encontró ninguna definición para "{0}"',"No se encontró ninguna definición"," – {0} definiciones","Ir a definición","Abrir definición en el lateral","Ver la definición",'No se encontró ninguna implementación para "{0}"',"No se encontró ninguna implementación","{0} implementaciones","Ir a implementación","Inspeccionar implementación",'No se encontró ninguna definición de tipo para "{0}"',"No se encontró ninguna definición de tipo"," – {0} definiciones de tipo","Ir a la definición de tipo","Inspeccionar definición de tipo"],"vs/editor/contrib/goToDefinition/goToDefinitionMouse":["Haga clic para mostrar {0} definiciones."],"vs/editor/contrib/gotoError/gotoError":["Ir al siguiente problema (Error, Advertencia, Información)","Ir al problema anterior (Error, Advertencia, Información)","Ir al siguiente problema en Archivos (Error, Advertencia, Información)","Ir al problema anterior en Archivos (Error, Advertencia, Información)"], +"vs/editor/contrib/gotoError/gotoErrorWidget":["({0}/{1})","Color de los errores del widget de navegación de marcadores del editor.","Color de las advertencias del widget de navegación de marcadores del editor.","Color del widget informativo marcador de navegación en el editor.","Fondo del widget de navegación de marcadores del editor."],"vs/editor/contrib/hover/hover":["Mostrar al mantener el puntero"],"vs/editor/contrib/hover/modesContentHover":["Cargando..."],"vs/editor/contrib/inPlaceReplace/inPlaceReplace":["Reemplazar con el valor anterior","Reemplazar con el valor siguiente"], +"vs/editor/contrib/linesOperations/linesOperations":["Copiar línea arriba","&&Copy Line Up","Copiar línea abajo","Co&&py Line Down","Mover línea hacia arriba","Mo&&ve Line Up","Mover línea hacia abajo","Move &&Line Down","Ordenar líneas en orden ascendente","Ordenar líneas en orden descendente","Recortar espacio final","Eliminar línea","Sangría de línea","Anular sangría de línea","Insertar línea arriba","Insertar línea debajo","Eliminar todo a la izquierda","Eliminar todo lo que está a la derecha","Unir líneas","Transponer caracteres alrededor del cursor","Transformar a mayúsculas","Transformar a minúsculas"], +"vs/editor/contrib/links/links":["Cmd + clic para abrir el vínculo","Ctrl + clic para abrir el vínculo","Cmd + click para ejecutar el comando","Ctrl + click para ejecutar el comando","Opción + clic para seguir el enlace","Alt + clic para seguir el vínculo","Opción + click para ejecutar el comando","Alt + clic para ejecutar el comando","No se pudo abrir este vínculo porque no tiene un formato correcto: {0}","No se pudo abrir este vínculo porque falta el destino.","Abrir vínculo"],"vs/editor/contrib/message/messageController":["No se puede editar en un editor de sólo lectura"], +"vs/editor/contrib/multicursor/multicursor":["Agregar cursor arriba","&&Add Cursor Above","Agregar cursor debajo","A&&dd Cursor Below","Añadir cursores a finales de línea","Add C&&ursors to Line Ends","Agregar selección hasta la siguiente coincidencia de búsqueda","Add &&Next Occurrence","Agregar selección hasta la anterior coincidencia de búsqueda","Add P&&revious Occurrence","Mover última selección hasta la siguiente coincidencia de búsqueda","Mover última selección hasta la anterior coincidencia de búsqueda","Seleccionar todas las repeticiones de coincidencia de búsqueda","Select All &&Occurrences","Cambiar todas las ocurrencias"],"vs/editor/contrib/parameterHints/parameterHints":["Sugerencias para parámetros Trigger"],"vs/editor/contrib/parameterHints/parameterHintsWidget":["{0}, sugerencia"],"vs/editor/contrib/referenceSearch/peekViewWidget":["Cerrar"],"vs/editor/contrib/referenceSearch/referenceSearch":[" – {0} referencias","Buscar todas las referencias"], +"vs/editor/contrib/referenceSearch/referencesController":["Cargando..."],"vs/editor/contrib/referenceSearch/referencesModel":["símbolo en {0} linea {1} en la columna {2}","1 símbolo en {0}, ruta de acceso completa {1}","{0} símbolos en {1}, ruta de acceso completa {2}","No se encontraron resultados","Encontró 1 símbolo en {0}","Encontró {0} símbolos en {1}","Encontró {0} símbolos en {1} archivos"], +"vs/editor/contrib/referenceSearch/referencesWidget":["Error al resolver el archivo.","{0} referencias","{0} referencia","vista previa no disponible","Referencias","No hay resultados.","Referencias","Color de fondo del área de título de la vista de inspección.","Color del título de la vista de inpección.","Color de la información del título de la vista de inspección.","Color de los bordes y la flecha de la vista de inspección.","Color de fondo de la lista de resultados de vista de inspección.","Color de primer plano de los nodos de inspección en la lista de resultados.","Color de primer plano de los archivos de inspección en la lista de resultados.","Color de fondo de la entrada seleccionada en la lista de resultados de vista de inspección.","Color de primer plano de la entrada seleccionada en la lista de resultados de vista de inspección.","Color de fondo del editor de vista de inspección.","Color de fondo del margen en el editor de vista de inspección.","Buscar coincidencia con el color de resaltado de la lista de resultados de vista de inspección.","Buscar coincidencia del color de resultado del editor de vista de inspección.","Hacer coincidir el borde resaltado en el editor de vista previa."], +"vs/editor/contrib/rename/rename":["No hay ningún resultado.","Nombre cambiado correctamente de '{0}' a '{1}'. Resumen: {2}","No se pudo cambiar el nombre.","Cambiar el nombre del símbolo"],"vs/editor/contrib/rename/renameInputField":["Cambie el nombre de la entrada. Escriba el nuevo nombre y presione Entrar para confirmar."],"vs/editor/contrib/smartSelect/smartSelect":["Expandir selección","&&Expand Selection","Reducir selección","&&Shrink Selection"],"vs/editor/contrib/snippet/snippetVariables":["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado","Dom","Lun","Mar","Mié","Jue","Vie","Sáb","Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre","Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Noviembre","Dic"],"vs/editor/contrib/suggest/suggestController":["Aceptando '{0}' Insertó el siguente texto : {1}","Sugerencias para Trigger"], +"vs/editor/contrib/suggest/suggestWidget":["Color de fondo del widget sugerido.","Color de borde del widget sugerido.","Color de primer plano del widget sugerido.","Color de fondo de la entrada seleccionada del widget sugerido.","Color del resaltado coincidido en el widget sugerido.","Leer más...{0}","{0}, sugerencia, con detalles","{0}, sugerencia","Leer menos...{0}","Cargando...","No hay sugerencias.","{0}, aceptada","{0}, sugerencia, con detalles","{0}, sugerencia"],"vs/editor/contrib/toggleTabFocusMode/toggleTabFocusMode":["Alternar tecla de tabulación para mover el punto de atención"], +"vs/editor/contrib/wordHighlighter/wordHighlighter":["Color de fondo de un símbolo durante el acceso de lectura, como leer una variable. El color no debe ser opaco para no ocultar las decoraciones subyacentes.","Color de fondo de un símbolo durante el acceso de escritura, como escribir en una variable. El color no debe ser opaco para no ocultar las decoraciones subyacentes.","Color de fondo de un símbolo durante el acceso de lectura; por ejemplo, cuando se lee una variable.","Color de fondo de un símbolo durante el acceso de escritura; por ejemplo, cuando se escribe una variable.","Destaca el color del marcador para los puntos del símbolo. El color no debe ser opaco para no ocultar las decoraciones subyacentes.","Destaca el color del marcador de acceso de escritura. El color no debe ser opaco para no ocultar las decoraciones subyacentes.","Ir al siguiente símbolo destacado","Ir al símbolo destacado anterior"], +"vs/editor/standalone/browser/accessibilityHelp/accessibilityHelp":["No selection","Line {0}, Column {1} ({2} selected)","Line {0}, Column {1}","{0} selections ({1} characters selected)","{0} selections","Now changing the setting `accessibilitySupport` to 'on'.","Now opening the Editor Accessibility documentation page."," in a read-only pane of a diff editor."," in a pane of a diff editor."," in a read-only code editor"," in a code editor","To configure the editor to be optimized for usage with a Screen Reader press Command+E now.","To configure the editor to be optimized for usage with a Screen Reader press Control+E now.","The editor is configured to be optimized for usage with a Screen Reader.","The editor is configured to never be optimized for usage with a Screen Reader, which is not the case at this time.","Pressing Tab in the current editor will move focus to the next focusable element. Toggle this behavior by pressing {0}.","Pressing Tab in the current editor will move focus to the next focusable element. The command {0} is currently not triggerable by a keybinding.","Pressing Tab in the current editor will insert the tab character. Toggle this behavior by pressing {0}.","Pressing Tab in the current editor will insert the tab character. The command {0} is currently not triggerable by a keybinding.","Press Command+H now to open a browser window with more information related to editor accessibility.","Press Control+H now to open a browser window with more information related to editor accessibility.","You can dismiss this tooltip and return to the editor by pressing Escape or Shift+Escape.","Show Accessibility Help"], +"vs/editor/standalone/browser/inspectTokens/inspectTokens":["Developer: Inspect Tokens"],"vs/editor/standalone/browser/quickOpen/gotoLine":["Go to line {0} and character {1}","Go to line {0}","Type a line number between 1 and {0} to navigate to","Type a character between 1 and {0} to navigate to","Go to line {0}","Type a line number, followed by an optional colon and a character number to navigate to","Go to Line..."],"vs/editor/standalone/browser/quickOpen/quickCommand":["{0}, commands","Type the name of an action you want to execute","Command Palette"],"vs/editor/standalone/browser/quickOpen/quickOutline":["{0}, symbols","Type the name of an identifier you wish to navigate to","Go to Symbol...","symbols ({0})","modules ({0})","classes ({0})","interfaces ({0})","methods ({0})","functions ({0})","properties ({0})","variables ({0})","variables ({0})","constructors ({0})","calls ({0})"],"vs/editor/standalone/browser/simpleServices":["Made {0} edits in {1} files"], +"vs/editor/standalone/browser/standaloneCodeEditor":["Editor content","Press Ctrl+F1 for Accessibility Options.","Press Alt+F1 for Accessibility Options."],"vs/editor/standalone/browser/toggleHighContrast/toggleHighContrast":["Toggle High Contrast Theme"],"vs/platform/configuration/common/configurationRegistry":["La configuración predeterminada se reemplaza","Establecer los valores de configuración que se reemplazarán para el lenguaje {0}.","Establecer los valores de configuración que se reemplazarán para un lenguaje.",'No se puede registrar "{0}". Coincide con el patrón de propiedad \'\\\\[.*\\\\]$\' para describir la configuración del editor específica del lenguaje. Utilice la contribución "configurationDefaults".','No se puede registrar "{0}". Esta propiedad ya está registrada.'],"vs/platform/keybinding/common/abstractKeybindingService":["Se presionó ({0}). Esperando la siguiente tecla...","La combinación de teclas ({0}, {1}) no es ningún comando."], +"vs/platform/list/browser/listService":["Área de trabajo",'Se asigna a "Control" en Windows y Linux y a "Comando" en macOS.','Se asigna a "Alt" en Windows y Linux y a "Opción" en macOS.',"El modificador que se usará para agregar un elemento en árboles y listas a una selección múltiple con el mouse (por ejemplo en el explorador, los editores abiertos y la vista SCM). ' ctrlCmd ' se asigna a ' control ' en Windows y Linux y a ' Command ' en macOS. Los gestos de ratón \"abrir a lado\", si se admiten, se adaptarán de tal manera que no estén en conflicto con el modificador multiselección.","Controla cómo abrir elementos en árboles y listas con el ratón (si está soportado). Establecer en ' singleClick ' para abrir elementos con un solo clic del ratón y ' DoubleClick ' para abrir sólo a través del doble clic del ratón. Para los elementos padres con hijos en los árboles, este ajuste controlará si un solo clic expande el padre o un doble clic. Tenga en cuenta que algunos árboles y listas pueden optar por ignorar esta configuración si no es aplicable","Controla el esplazamiento horizontal de los árboles en la mesa de trabajo."], +"vs/platform/markers/common/markers":["Error","Advertencia","Información"], +"vs/platform/theme/common/colorRegistry":["Colores usados en el área de trabajo.","Color de primer plano general. Este color solo se usa si un componente no lo invalida.","Color de primer plano general para los mensajes de erroe. Este color solo se usa si un componente no lo invalida.","Color de borde de los elementos con foco. Este color solo se usa si un componente no lo invalida.","Un borde adicional alrededor de los elementos para separarlos unos de otros y así mejorar el contraste.","Un borde adicional alrededor de los elementos activos para separarlos unos de otros y así mejorar el contraste.","Color de primer plano para los vínculos en el texto.","Color de fondo para los bloques de código en el texto.","Color de sombra de los widgets dentro del editor, como buscar/reemplazar","Fondo de cuadro de entrada.","Primer plano de cuadro de entrada.","Borde de cuadro de entrada.","Color de borde de opciones activadas en campos de entrada.","Color de fondo de validación de entrada para gravedad de información.","Color de borde de validación de entrada para gravedad de información.","Color de fondo de validación de entrada para gravedad de advertencia.","Color de borde de validación de entrada para gravedad de advertencia.","Color de fondo de validación de entrada para gravedad de error.","Color de borde de valdación de entrada para gravedad de error.","Color de fondo de la lista o el árbol del elemento con el foco cuando la lista o el árbol están activos. Una lista o un árbol tienen el foco del teclado cuando están activos, cuando están inactivos no.","Color de fondo de la lista o el árbol del elemento con el foco cuando la lista o el árbol están activos. Una lista o un árbol tienen el foco del teclado cuando están activos, cuando están inactivos no.","Color de fondo de la lista o el árbol del elemento seleccionado cuando la lista o el árbol están activos. Una lista o un árbol tienen el foco del teclado cuando están activos, cuando están inactivos no.","Color de primer plano de la lista o el árbol del elemento con el foco cuando la lista o el árbol están activos. Una lista o un árbol tienen el foco del teclado cuando están activos, cuando están inactivos no.","Color de fondo de la lista o el árbol del elemento seleccionado cuando la lista o el árbol están inactivos. Una lista o un árbol tienen el foco del teclado cuando están activos, cuando están inactivos no.","Color de primer plano de la lista o el árbol del elemento con el foco cuando la lista o el árbol esta inactiva. Una lista o un árbol tiene el foco del teclado cuando está activo, cuando esta inactiva no.","List/Tree background color for the focused item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.","Fondo de la lista o el árbol al mantener el mouse sobre los elementos.","Color de primer plano de la lista o el árbol al pasar por encima de los elementos con el ratón.","Fondo de arrastrar y colocar la lista o el árbol al mover los elementos con el mouse.","Color de primer plano de la lista o el árbol de las coincidencias resaltadas al buscar dentro de la lista o el ábol.","Selector de color rápido para la agrupación de etiquetas.","Selector de color rápido para la agrupación de bordes.","Color de fondo de la insignia. Las insignias son pequeñas etiquetas de información, por ejemplo los resultados de un número de resultados.","Color de fondo de la insignia. Las insignias son pequeñas etiquetas de información, por ejemplo los resultados de un número de resultados.","Sombra de la barra de desplazamiento indica que la vista se ha despazado.","Color de fondo de control deslizante de barra de desplazamiento.","Color de fondo de barra de desplazamiento cursor cuando se pasar sobre el control.","Color de fondo de la barra de desplazamiento al hacer clic.","Color de fondo para la barra de progreso que se puede mostrar para las operaciones de larga duración.","Color de fondo del editor.","Color de primer plano predeterminado del editor.","Color de fondo del editor de widgets como buscar/reemplazar","Color de borde de los widgets del editor. El color solo se usa si el widget elige tener un borde y no invalida el color.","Border color of the resize bar of editor widgets. The color is only used if the widget chooses to have a resize border and if the color is not overridden by a widget.","Color de la selección del editor.","Color del texto seleccionado para alto contraste.","Color de la selección en un editor inactivo. El color no debe ser opaco para no ocultar las decoraciones subyacentes.","Color para regiones con el mismo contenido que la selección. El color no debe ser opaco para no ocultar las decoraciones subyacentes.","Color de borde de las regiones con el mismo contenido que la selección.","Color de la coincidencia de búsqueda actual.","Color de las otras coincidencias de búsqueda. El color no debe ser opaco para no ocultar las decoraciones subyacentes.","Color de la gama que limita la búsqueda. El color no debe ser opaco para no ocultar las decoraciones subyacentes.","Color de borde de la coincidencia de búsqueda actual.","Color de borde de otra búsqueda que coincide.","Color de borde de la gama que limita la búsqueda. El color no debe ser opaco para no ocultar las decoraciones subyacentes.","Resalte debajo de la palabra para la cual se muestra un Hover. El color no debe ser opaco para no ocultar las decoraciones subyacentes.","Color de fondo al mantener el puntero en el editor.","Color del borde al mantener el puntero en el editor.","Color de los vínculos activos.","Color de fondo del texto que se insertó. El color no debe ser opaco para no ocultar las decoraciones subyacentes.","Color de fondo del texto que se eliminó. El color no debe ser opaco para no ocultar las decoraciones subyacentes.","Color de contorno para el texto insertado.","Color de contorno para el texto quitado.","Border color between the two text editors.","Destaca el color del marcador de regla para las coincidencias de búsqueda. El color no debe ser opaco para no ocultar las decoraciones subyacentes.","Destaca el color del marcador de regla para los puntos de selección . El color no debe ser opaco para no ocultar las decoraciones subyacentes."] +}); +//# sourceMappingURL=../../../min-maps/vs/editor/editor.main.nls.es.js.map \ No newline at end of file diff --git a/app/monaco-editor/min/vs/editor/editor.main.nls.fr.js b/app/monaco-editor/min/vs/editor/editor.main.nls.fr.js new file mode 100644 index 00000000..93d01b05 --- /dev/null +++ b/app/monaco-editor/min/vs/editor/editor.main.nls.fr.js @@ -0,0 +1,33 @@ +/*!----------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.14.6(6c8f02b41db9ae5c4d15df767d47755e5c73b9d5) + * Released under the MIT license + * https://github.com/Microsoft/vscode/blob/master/LICENSE.txt + *-----------------------------------------------------------*/ +define("vs/editor/editor.main.nls.fr",{"vs/base/browser/ui/actionbar/actionbar":["{0} ({1})"],"vs/base/browser/ui/aria/aria":["{0} (s'est reproduit)","{0} (occurred {1} times)"],"vs/base/browser/ui/findinput/findInput":["entrée"],"vs/base/browser/ui/findinput/findInputCheckboxes":["Respecter la casse","Mot entier","Utiliser une expression régulière"],"vs/base/browser/ui/inputbox/inputBox":["Erreur : {0}","Avertissement : {0}","Information : {0}"],"vs/base/browser/ui/list/listWidget":["{0}. Use the navigation keys to navigate."],"vs/base/browser/ui/menu/menu":["{0} ({1})"],"vs/base/common/keybindingLabels":["Ctrl","Maj","Alt","Windows","Ctrl","Maj","Alt","Super","Contrôle","Maj","Alt","Commande","Contrôle","Maj","Alt","Windows","Contrôle","Maj","Alt","Super"],"vs/base/common/severity":["Erreur","Avertissement","Informations"],"vs/base/parts/quickopen/browser/quickOpenModel":["{0}, sélecteur","sélecteur"], +"vs/base/parts/quickopen/browser/quickOpenWidget":["Sélecteur rapide. Tapez pour réduire les résultats.","Sélecteur rapide","{0} Results"],"vs/editor/browser/controller/coreCommands":["&&Select All","&&Undo","&&Redo"],"vs/editor/browser/widget/codeEditorWidget":["Le nombre de curseurs a été limité à {0}."],"vs/editor/browser/widget/diffEditorWidget":["Impossible de comparer les fichiers car l'un d'eux est trop volumineux."],"vs/editor/browser/widget/diffReview":["Fermer","aucune ligne","1 ligne","{0} lignes","Différence {0} sur {1} : original {2}, {3}, modifié {4}, {5}","vide","{0} d'origine, {1} modifiées : {2}","+ {0} modifiées : {1}","- {0} d'origine : {1}","Accéder à la différence suivante","Accéder la différence précédente"], +"vs/editor/common/config/commonEditorConfig":["Éditeur","Contrôle la famille de polices.","Contrôle l'épaisseur de police.","Contrôle la taille de police en pixels.","Contrôle la hauteur de ligne. Utilisez 0 pour calculer lineHeight à partir de fontSize.","Définit l'espacement des caractères en pixels.","Les numéros de ligne ne sont pas affichés.","Les numéros de ligne sont affichés en nombre absolu.","Les numéros de ligne sont affichés sous la forme de distance en lignes à la position du curseur.","Les numéros de ligne sont affichés toutes les 10 lignes.","Contrôle l’affichage des numéros de ligne.","Afficher les règles verticales après un certain nombre de caractères à espacement fixe. Utiliser plusieurs valeurs pour plusieurs règles. Aucune règle n'est dessinée si le tableau est vide","Caractères utilisés comme séparateurs de mots durant la navigation ou les opérations basées sur les mots","Le nombre d'espaces correspondant à une tabulation. Ce paramètre est remplacé en fonction du contenu du fichier quand 'editor.detectIndentation' est activé.","'number' attendu. Notez que la valeur \"auto\" a été remplacée par le paramètre 'editor.detectIndentation'.","Espaces insérés quand vous appuyez sur la touche Tab. Ce paramètre est remplacé en fonction du contenu du fichier quand 'editor.detectIndentation' est activé.","'boolean' attendu. Notez que la valeur \"auto\" a été remplacée par le paramètre 'editor.detectIndentation'.","Quand vous ouvrez un fichier, 'editor.tabSize' et 'editor.insertSpaces' sont détectés en fonction du contenu du fichier.","Contrôle si les sélections ont des angles arrondis","Contrôle si l'éditeur défile au-delà de la dernière ligne","Contrôle le nombre de caractères supplémentaires, au-delà duquel l’éditeur défilera horizontalement","Contrôle si l'éditeur défilera en utilisant une animation","Contrôle si la minicarte est affichée","Contrôle le côté où afficher la minicarte.","Contrôle si le curseur de la minicarte est automatiquement masqué","Afficher les caractères réels sur une ligne (par opposition aux blocs de couleurs)","Limiter la largeur de la minicarte pour afficher au maximum un certain nombre de colonnes","Controls whether the hover is shown.","Time delay in milliseconds after which to the hover is shown.","Controls whether the hover should remain visible when mouse is moved over it.","Contrôle si nous remplissons la chaîne à rechercher dans le Widget Recherche à partir de la sélection de l'éditeur","Contrôle si l'indicateur Rechercher dans la sélection est activé quand plusieurs caractères ou lignes de texte sont sélectionnés dans l'éditeur","Contrôle si le Widget Recherche doit lire ou modifier le presse-papiers partagé sur macOS","Le retour automatique à la ligne n'est jamais effectué.","Le retour automatique à la ligne s'effectue en fonction de la largeur de la fenêtre d'affichage.","Le retour automatique à la ligne s'effectue en fonction de 'editor.wordWrapColumn'.","Retour automatique à la ligne au minimum en fonction de la fenêtre d'affichage et de 'editor.wordWrapColumn'.","Contrôle le retour automatique à la ligne. Valeurs possibles :\n - 'off' (désactive le retour automatique à la ligne) ;\n - 'on' (retour automatique à la ligne dans la fenêtre d'affichage) ;\n - 'wordWrapColumn' (retour automatique à la ligne en fonction de 'editor.wordWrapColumn') ou ;\n - 'bounded' (retour automatique à la ligne au minimum en fonction de la fenêtre d'affichage et de 'editor.wordWrapColumn').","Contrôle la colonne de retour automatique à la ligne de l'éditeur quand 'editor.wordWrap' a la valeur 'wordWrapColumn' ou 'bounded'.","No indentation. Wrapped lines begin at column 1.","Wrapped lines get the same indentation as the parent.","Wrapped lines get +1 indentation toward the parent.","Wrapped lines get +2 indentation toward the parent.","Contrôle la mise en retrait des lignes enveloppées. Il peut s’agir de 'none', 'same', 'indent' ou 'deepIndent'.","Multiplicateur à utiliser pour le 'deltaX' et le 'deltaY' des événements de défilement de la roulette de la souris","Mappe vers 'Contrôle' dans Windows et Linux, et vers 'Commande' dans macOS.","Mappe vers 'Alt' dans Windows et Linux, et vers 'Option' dans macOS.","Le modificateur à utiliser pour ajouter plusieurs curseurs avec la souris. 'ctrlCmd' mappe vers 'Contrôle' dans Windows et Linux, et vers 'Commande' dans macOS. Les mouvements de souris Accéder à la définition et Ouvrir le lien s'adaptent pour ne pas entrer en conflit avec le modificateur multicurseur.","Fusionnez plusieurs curseurs quand ils se chevauchent.","Activez les suggestions rapides dans les chaînes.","Activez les suggestions rapides dans les commentaires.","Activez les suggestions rapides en dehors des chaînes et des commentaires.","Contrôle si les suggestions doivent s'afficher automatiquement en cours de frappe","Contrôle le délai en ms au bout duquel les suggestions rapides s'affichent","Active la pop up qui affiche la documentation des paramètres et écrit de l'information pendant que vous écrivez","Contrôle si l'éditeur doit automatiquement fermer les crochets après les avoir ouverts","Contrôle si l'éditeur doit automatiquement mettre en forme la ligne après la saisie","Contrôle si l'éditeur doit automatiquement mettre en forme le contenu collé. Un formateur doit être disponible et doit pouvoir mettre en forme une plage dans un document.","Contrôle si l’éditeur doit ajuster automatiquement la mise en retrait lorsque les utilisateurs tapent, collent ou déplacent des lignes. Les règles de mise en retrait du language doivent être disponibles.","Contrôle si les suggestions doivent s'afficher automatiquement durant la saisie de caractères de déclenchement","Only accept a suggestion with `Enter` when it makes a textual change.","Contrôle si les suggestions doivent être acceptées avec 'Entrée', en plus de 'Tab'. Cela permet d'éviter toute ambiguïté entre l'insertion de nouvelles lignes et l'acceptation de suggestions. La valeur 'smart' signifie que vous acceptez uniquement une suggestion avec Entrée quand elle applique une modification de texte","Contrôle si les suggestions doivent être acceptées avec des caractères de validation. Par exemple, en JavaScript, le point-virgule (';') peut être un caractère de validation qui permet d'accepter une suggestion et de taper ce caractère.","Afficher des suggestions d’extraits au-dessus d’autres suggestions.","Afficher des suggestions d’extraits en-dessous d’autres suggestions.","Afficher des suggestions d’extraits avec d’autres suggestions.","Ne pas afficher de suggestions d’extrait de code.","Contrôle si les extraits de code s'affichent en même temps que d'autres suggestions, ainsi que leur mode de tri.","Contrôle si la copie sans sélection permet de copier la ligne actuelle.","Contrôle si la saisie semi-automatique doit être calculée en fonction des mots présents dans le document.","Sélectionnez toujours la première suggestion.","Sélectionnez les suggestions récentes à moins qu'une saisie ultérieure en sélectionne un, par exemple 'console.| -> console.log' parce que `log` a été complété récemment.","Sélectionnez des suggestions basées sur des préfixes précédents qui ont complété ces suggestions, par exemple `co -> console` et `con -> const`.","Contrôle comment les suggestions sont pré-sélectionnés lors de l’affichage de la liste de suggestion.","Taille de police du widget de suggestion","Hauteur de ligne du widget de suggestion","Controls whether filtering and sorting suggestions accounts for small typos.","Control whether an active snippet prevents quick suggestions.","Détermine si l'éditeur doit surligner les correspondances similaires à la sélection","Contrôle si l'éditeur doit mettre en surbrillance les occurrences de symboles sémantiques","Contrôle le nombre d'ornements pouvant s'afficher à la même position dans la règle d'aperçu","Contrôle si une bordure doit être dessinée autour de la règle d'aperçu.","Contrôler le style d’animation du curseur.","Agrandir ou réduire la police de l'éditeur quand l'utilisateur fait tourner la roulette de la souris tout en maintenant la touche Ctrl enfoncée","Contrôle le style du curseur. Les valeurs acceptées sont 'block', 'block-outline', 'line', 'line-thin', 'underline' et 'underline-thin'","Contrôle la largeur du curseur quand editor.cursorStyle est à 'line'","Active les ligatures de police","Contrôle si le curseur doit être masqué dans la règle d'aperçu.","Render whitespace characters except for single spaces between words.","Contrôle la façon dont l'éditeur affiche les espaces blancs. Il existe trois options possibles : 'none', 'boundary' et 'all'. L'option 'boundary' n'affiche pas les espaces uniques qui séparent les mots.","Contrôle si l'éditeur doit afficher les caractères de contrôle","Contrôle si l'éditeur doit afficher les repères de mise en retrait","Controls whether the editor should highlight the active indent guide.","Highlights both the gutter and the current line.","Contrôle la façon dont l'éditeur doit afficher la surbrillance de la ligne active. Les différentes possibilités sont 'none', 'gutter', 'line' et 'all'.","Contrôle si l’éditeur affiche CodeLens","Contrôle si le pliage de code est activé dans l'éditeur","Contrôle la façon dont les repliages sont calculées. 'auto' utilise une stratégie repliage spécifique au langage, si disponible. 'indentation' force à ce que la stratégie de repliage basée sur l'indentation soit utilisée.","Définit si les contrôles de réduction sur la bordure sont cachés automatiquement","Met en surbrillance les crochets correspondants quand l'un d'eux est sélectionné.","Contrôle si l'éditeur doit afficher la marge de glyphes verticale. La marge de glyphes sert principalement au débogage.","L'insertion et la suppression d'un espace blanc suit les taquets de tabulation","Supprimer l'espace blanc de fin inséré automatiquement","Garder les éditeurs d'aperçu ouverts même si l'utilisateur double-clique sur son contenu ou appuie sur la touche Échap.","Contrôle si l'éditeur autorise le déplacement des sélections par glisser-déplacer.","L'éditeur utilise les API de la plateforme pour détecter si un lecteur d'écran est attaché.","L'éditeur est optimisé en permanence pour une utilisation avec un lecteur d'écran.","L'éditeur n'est jamais optimisé pour une utilisation avec un lecteur d'écran.","Contrôle si l'éditeur doit s'exécuter dans un mode optimisé pour les lecteurs d'écran.","Controls fading out of unused code.","Contrôle si l'éditeur doit détecter les liens et les rendre cliquables","Contrôle si l'éditeur doit afficher les éléments décoratifs de couleurs inline et le sélecteur de couleurs.","Active l'ampoule d'action de code","Exécuter organiser les importations lors de l'enregistrement ?","Types d'action de code à exécuter à l'enregistrement.","Délai d'attente pour les actions de code exécutées lors de l'enregistrement.","Contrôle si le presse-papiers primaire Linux doit être pris en charge.","Contrôle si l'éditeur de différences affiche les différences en mode côte à côte ou inline","Contrôle si l'éditeur de différences affiche les changements liés aux espaces blancs de début ou de fin comme des différences","Traitement spécial des fichiers volumineux pour désactiver certaines fonctionnalités utilisant beaucoup de mémoire.","Contrôle si l'éditeur de différences affiche les indicateurs +/- pour les modifications ajoutées/supprimées"], +"vs/editor/common/config/editorOptions":["L'éditeur n'est pas accessible pour le moment. Appuyez sur Alt+F1 pour connaître les options.","Contenu d'éditeur"],"vs/editor/common/controller/cursor":["Exception inattendue pendant l'exécution de la commande."],"vs/editor/common/modes/modesRegistry":["Texte brut"],"vs/editor/common/services/modelServiceImpl":["[{0}]\n{1}","[{0}] {1}"], +"vs/editor/common/view/editorColorRegistry":["Couleur d'arrière-plan de la mise en surbrillance de la ligne à la position du curseur.","Couleur d'arrière-plan de la bordure autour de la ligne à la position du curseur.","Couleur d'arrière-plan des plages mises en surbrillance, par exemple par les fonctionnalités d'ouverture rapide et de recherche. La couleur ne doit pas être opaque pour ne pas masquer les décorations sous-jacentes.","Couleur d'arrière-plan de la bordure autour des plages mises en surbrillance.","Couleur du curseur de l'éditeur.","La couleur de fond du curseur de l'éditeur. Permet de personnaliser la couleur d'un caractère survolé par un curseur de bloc.","Couleur des espaces blancs dans l'éditeur.","Couleur des repères de retrait de l'éditeur.","Couleur des guides d'indentation de l'éditeur actif","Couleur des numéros de ligne de l'éditeur.","Couleur des numéros de lignes actives de l'éditeur","Id est obsolète. Utilisez à la place 'editorLineNumber.activeForeground'. ","Couleur des numéros de lignes actives de l'éditeur","Couleur des règles de l'éditeur","Couleur pour les indicateurs CodeLens","Couleur d'arrière-plan pour les accolades associées","Couleur pour le contour des accolades associées","Couleur de la bordure de la règle d'apperçu.","Couleur de fond pour la bordure de l'éditeur. La bordure contient les marges pour les symboles et les numéros de ligne.","Couleur de premier plan de la ligne ondulée marquant les erreurs dans l'éditeur.","Couleur de bordure de la ligne ondulée marquant les erreurs dans l'éditeur.","Couleur de premier plan de la ligne ondulée marquant les avertissements dans l'éditeur.","Couleur de bordure de la ligne ondulée marquant les avertissements dans l'éditeur.","Couleur de premier plan de la ligne ondulée marquant les informations dans l'éditeur.","Couleur de bordure de la ligne ondulée marquant les informations dans l'éditeur.","Couleur de premier plan de la ligne ondulée d'indication dans l'éditeur.","Couleur de bordure de la ligne ondulée d'indication dans l'éditeur.","Border of unnecessary code in the editor.","Opacity of unnecessary code in the editor.","Couleur du marqueur de la règle d'aperçu pour les erreurs.","Couleur du marqueur de la règle d'aperçu pour les avertissements.","Couleur du marqueur de la règle d'aperçu pour les informations."], +"vs/editor/contrib/bracketMatching/bracketMatching":["Couleur du marqueur de la règle d'aperçu pour rechercher des parenthèses.","Atteindre le crochet","Select to Bracket"],"vs/editor/contrib/caretOperations/caretOperations":["Déplacer le point d'insertion vers la gauche","Déplacer le point d'insertion vers la droite"],"vs/editor/contrib/caretOperations/transpose":["Transposer les lettres"],"vs/editor/contrib/clipboard/clipboard":["Couper","Cu&&t","Copier","&&Copy","Coller","&&Paste","Copier avec la coloration syntaxique"],"vs/editor/contrib/codeAction/codeActionCommands":["Afficher les correctifs ({0})","Afficher les correctifs","Correction rapide...","Aucune action de code disponible","Aucune action de code disponible","Remanier...","Aucune refactorisation disponible","Action de la source","Aucune action n'est disponible","Organiser les Imports","Aucune action organiser les imports disponible"], +"vs/editor/contrib/comment/comment":["Activer/désactiver le commentaire de ligne","&&Toggle Line Comment","Ajouter le commentaire de ligne","Supprimer le commentaire de ligne","Activer/désactiver le commentaire de bloc","Toggle &&Block Comment"],"vs/editor/contrib/contextmenu/contextmenu":["Afficher le menu contextuel de l'éditeur"],"vs/editor/contrib/cursorUndo/cursorUndo":["Soft Undo"],"vs/editor/contrib/find/findController":["Rechercher","&&Find","Rechercher dans la sélection","Rechercher suivant","Rechercher précédent","Sélection suivante","Sélection précédente","Remplacer","&&Replace"],"vs/editor/contrib/find/findWidget":["Rechercher","Rechercher","Correspondance précédente","Correspondance suivante","Rechercher dans la sélection","Fermer","Remplacer","Remplacer","Remplacer","Tout remplacer","Changer le mode de remplacement","Seuls les {0} premiers résultats sont mis en évidence, mais toutes les opérations de recherche fonctionnent sur l’ensemble du texte.","{0} sur {1}","Aucun résultat"], +"vs/editor/contrib/folding/folding":["Déplier","Déplier de manière récursive","Plier","Plier de manière récursive","Replier tous les commentaires de bloc","Replier toutes les régions","Déplier toutes les régions","Plier tout","Déplier tout","Niveau de pliage {0}"],"vs/editor/contrib/fontZoom/fontZoom":["Agrandissement de l'éditeur de polices de caractères","Rétrécissement de l'éditeur de polices de caractères","Remise à niveau du zoom de l'éditeur de polices de caractères"], +"vs/editor/contrib/format/formatActions":["1 modification de format effectuée à la ligne {0}","{0} modifications de format effectuées à la ligne {1}","1 modification de format effectuée entre les lignes {0} et {1}","{0} modifications de format effectuées entre les lignes {1} et {2}","Il n’y a aucun formateur installé pour les fichiers '{0}'.","Mettre en forme le document","Il n’y a aucun formateur de document installé pour les fichiers '{0}'.","Mettre en forme la sélection","Il n’y a aucun formateur de sélection installé pour les fichiers '{0}'."], +"vs/editor/contrib/goToDefinition/goToDefinitionCommands":["Définition introuvable pour '{0}'","Définition introuvable"," – {0} définitions","Atteindre la définition","Ouvrir la définition sur le côté","Aperçu de définition","Implémentation introuvable pour '{0}'","Implémentation introuvable","– Implémentations {0}","Accéder à l'implémentation","Aperçu de l'implémentation","Définition de type introuvable pour '{0}'","Définition de type introuvable"," – Définitions de type {0}","Atteindre la définition de type","Aperçu de la définition du type"],"vs/editor/contrib/goToDefinition/goToDefinitionMouse":["Cliquez pour afficher {0} définitions."],"vs/editor/contrib/gotoError/gotoError":["Aller au problème suivant (Erreur, Avertissement, Info)","Aller au problème précédent (Erreur, Avertissement, Info)","Aller au problème suivant dans Fichiers (Erreur, Avertissement, Info)","Aller au problème précédent dans Fichiers (Erreur, Avertissement, Info)"], +"vs/editor/contrib/gotoError/gotoErrorWidget":["({0}/{1})","Couleur d'erreur du widget de navigation dans les marqueurs de l'éditeur.","Couleur d'avertissement du widget de navigation dans les marqueurs de l'éditeur.","Couleur d’information du widget de navigation du marqueur de l'éditeur.","Arrière-plan du widget de navigation dans les marqueurs de l'éditeur."],"vs/editor/contrib/hover/hover":["Afficher par pointage"],"vs/editor/contrib/hover/modesContentHover":["Chargement..."],"vs/editor/contrib/inPlaceReplace/inPlaceReplace":["Remplacer par la valeur précédente","Remplacer par la valeur suivante"], +"vs/editor/contrib/linesOperations/linesOperations":["Copier la ligne en haut","&&Copy Line Up","Copier la ligne en bas","Co&&py Line Down","Déplacer la ligne vers le haut","Mo&&ve Line Up","Déplacer la ligne vers le bas","Move &&Line Down","Trier les lignes dans l'ordre croissant","Trier les lignes dans l'ordre décroissant","Découper l'espace blanc de fin","Supprimer la ligne","Mettre en retrait la ligne","Ajouter un retrait négatif à la ligne","Insérer une ligne au-dessus","Insérer une ligne sous","Supprimer tout ce qui est à gauche","Supprimer tout ce qui est à droite","Joindre les lignes","Transposer les caractères autour du curseur","Transformer en majuscule","Transformer en minuscule"], +"vs/editor/contrib/links/links":["Commande + clic pour suivre le lien","Ctrl + clic pour suivre le lien","Cmd + clic pour exécuter la commande","Ctrl + clic pour exécuter la commande","Option + clic pour suivre le lien","Alt + clic pour suivre le lien","Option + clic pour exécuter la commande","Alt + clic pour exécuter la commande","Échec de l'ouverture de ce lien, car il n'est pas bien formé : {0}","Échec de l'ouverture de ce lien, car sa cible est manquante.","Ouvrir le lien"],"vs/editor/contrib/message/messageController":["Impossible de modifier dans l’éditeur en lecture seule"], +"vs/editor/contrib/multicursor/multicursor":["Ajouter un curseur au-dessus","&&Add Cursor Above","Ajouter un curseur en dessous","A&&dd Cursor Below","Ajouter des curseurs à la fin des lignes","Add C&&ursors to Line Ends","Ajouter la sélection à la correspondance de recherche suivante","Add &&Next Occurrence","Ajouter la sélection à la correspondance de recherche précédente","Add P&&revious Occurrence","Déplacer la dernière sélection vers la correspondance de recherche suivante","Déplacer la dernière sélection à la correspondance de recherche précédente","Sélectionner toutes les occurrences des correspondances de la recherche","Select All &&Occurrences","Modifier toutes les occurrences"],"vs/editor/contrib/parameterHints/parameterHints":["Indicateurs des paramètres Trigger"],"vs/editor/contrib/parameterHints/parameterHintsWidget":["{0}, conseil"],"vs/editor/contrib/referenceSearch/peekViewWidget":["Fermer"], +"vs/editor/contrib/referenceSearch/referenceSearch":[" – {0} références","Rechercher toutes les références"],"vs/editor/contrib/referenceSearch/referencesController":["Chargement..."],"vs/editor/contrib/referenceSearch/referencesModel":["symbole dans {0} sur la ligne {1}, colonne {2}","1 symbole dans {0}, chemin complet {1}","{0} symboles dans {1}, chemin complet {2}","Résultats introuvables","1 symbole dans {0}","{0} symboles dans {1}","{0} symboles dans {1} fichiers"], +"vs/editor/contrib/referenceSearch/referencesWidget":["Échec de la résolution du fichier.","{0} références","{0} référence","aperçu non disponible","Références","Aucun résultat","Références","Couleur d'arrière-plan de la zone de titre de l'affichage d'aperçu.","Couleur du titre de l'affichage d'aperçu.","Couleur des informations sur le titre de l'affichage d'aperçu.","Couleur des bordures et de la flèche de l'affichage d'aperçu.","Couleur d'arrière-plan de la liste des résultats de l'affichage d'aperçu.","Couleur de premier plan des noeuds de lignes dans la liste des résultats de l'affichage d'aperçu.","Couleur de premier plan des noeuds de fichiers dans la liste des résultats de l'affichage d'aperçu.","Couleur d'arrière-plan de l'entrée sélectionnée dans la liste des résultats de l'affichage d'aperçu.","Couleur de premier plan de l'entrée sélectionnée dans la liste des résultats de l'affichage d'aperçu.","Couleur d'arrière-plan de l'éditeur d'affichage d'aperçu.","Couleur d'arrière-plan de la bordure de l'éditeur d'affichage d'aperçu.","Couleur de mise en surbrillance d'une correspondance dans la liste des résultats de l'affichage d'aperçu.","Couleur de mise en surbrillance d'une correspondance dans l'éditeur de l'affichage d'aperçu.","Bordure de mise en surbrillance d'une correspondance dans l'éditeur de l'affichage d'aperçu."], +"vs/editor/contrib/rename/rename":["Aucun résultat.","'{0}' renommé en '{1}'. Récapitulatif : {2}","Échec de l'exécution du renommage.","Renommer le symbole"],"vs/editor/contrib/rename/renameInputField":["Renommez l'entrée. Tapez le nouveau nom et appuyez sur Entrée pour valider."],"vs/editor/contrib/smartSelect/smartSelect":["Développer la sélection","&&Expand Selection","Réduire la sélection","&&Shrink Selection"],"vs/editor/contrib/snippet/snippetVariables":["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi","Dim","Lun","Mar","Mer","Jeu","Ven","Sam","Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre","Jan","Fév","Mar","Avr","Mai","Jun","Jul","Aoû","Sep","Oct","Nov","Déc"],"vs/editor/contrib/suggest/suggestController":["L'acceptation de '{0}' a inséré le texte suivant : {1}","Suggestions pour Trigger"], +"vs/editor/contrib/suggest/suggestWidget":["Couleur d'arrière-plan du widget de suggestion.","Couleur de bordure du widget de suggestion.","Couleur de premier plan du widget de suggestion.","Couleur d'arrière-plan de l'entrée sélectionnée dans le widget de suggestion.","Couleur de la surbrillance des correspondances dans le widget de suggestion.","En savoir plus...{0}","{0}, suggestion, avec détails","{0}, suggestion","En savoir moins...{0}","Chargement...","Pas de suggestions.","{0}, accepté","{0}, suggestion, avec détails","{0}, suggestion"],"vs/editor/contrib/toggleTabFocusMode/toggleTabFocusMode":["Activer/désactiver l'utilisation de la touche Tab pour déplacer le focus"], +"vs/editor/contrib/wordHighlighter/wordHighlighter":["Couleur d'arrière-plan d'un symbole durant l'accès en lecture, par exemple la lecture d'une variable. La couleur ne doit pas être opaque pour ne pas masquer les décorations sous-jacentes.","Couleur d'arrière-plan d'un symbole durant l'accès en écriture, par exemple l'écriture dans une variable. La couleur ne doit pas être opaque pour ne pas masquer les décorations sous-jacentes.","Couleur de bordure d'un symbole durant l'accès en lecture, par exemple la lecture d'une variable.","Couleur de bordure d'un symbole durant l'accès en écriture, par exemple l'écriture dans une variable.","Couleur du marqueur de la règle d'aperçu pour les mises en surbrillance de symbole. La couleur doit ne pas être opaque pour ne pas masquer les décorations du dessous.","Couleur du marqueur de la règle d'aperçu pour les mises en surbrillance de symbole d'accès en écriture. La couleur doit ne pas être opaque pour ne pas masquer les décorations du dessous.","Aller à la prochaine mise en évidence de symbole","Aller à la mise en évidence de symbole précédente"], +"vs/editor/standalone/browser/accessibilityHelp/accessibilityHelp":["No selection","Line {0}, Column {1} ({2} selected)","Line {0}, Column {1}","{0} selections ({1} characters selected)","{0} selections","Now changing the setting `accessibilitySupport` to 'on'.","Now opening the Editor Accessibility documentation page."," in a read-only pane of a diff editor."," in a pane of a diff editor."," in a read-only code editor"," in a code editor","To configure the editor to be optimized for usage with a Screen Reader press Command+E now.","To configure the editor to be optimized for usage with a Screen Reader press Control+E now.","The editor is configured to be optimized for usage with a Screen Reader.","The editor is configured to never be optimized for usage with a Screen Reader, which is not the case at this time.","Pressing Tab in the current editor will move focus to the next focusable element. Toggle this behavior by pressing {0}.","Pressing Tab in the current editor will move focus to the next focusable element. The command {0} is currently not triggerable by a keybinding.","Pressing Tab in the current editor will insert the tab character. Toggle this behavior by pressing {0}.","Pressing Tab in the current editor will insert the tab character. The command {0} is currently not triggerable by a keybinding.","Press Command+H now to open a browser window with more information related to editor accessibility.","Press Control+H now to open a browser window with more information related to editor accessibility.","You can dismiss this tooltip and return to the editor by pressing Escape or Shift+Escape.","Show Accessibility Help"], +"vs/editor/standalone/browser/inspectTokens/inspectTokens":["Developer: Inspect Tokens"],"vs/editor/standalone/browser/quickOpen/gotoLine":["Go to line {0} and character {1}","Go to line {0}","Type a line number between 1 and {0} to navigate to","Type a character between 1 and {0} to navigate to","Go to line {0}","Type a line number, followed by an optional colon and a character number to navigate to","Go to Line..."],"vs/editor/standalone/browser/quickOpen/quickCommand":["{0}, commands","Type the name of an action you want to execute","Command Palette"],"vs/editor/standalone/browser/quickOpen/quickOutline":["{0}, symbols","Type the name of an identifier you wish to navigate to","Go to Symbol...","symbols ({0})","modules ({0})","classes ({0})","interfaces ({0})","methods ({0})","functions ({0})","properties ({0})","variables ({0})","variables ({0})","constructors ({0})","calls ({0})"],"vs/editor/standalone/browser/simpleServices":["Made {0} edits in {1} files"], +"vs/editor/standalone/browser/standaloneCodeEditor":["Editor content","Press Ctrl+F1 for Accessibility Options.","Press Alt+F1 for Accessibility Options."],"vs/editor/standalone/browser/toggleHighContrast/toggleHighContrast":["Toggle High Contrast Theme"],"vs/platform/configuration/common/configurationRegistry":["Substitutions de configuration par défaut","Configurez les paramètres d'éditeur à remplacer pour le langage {0}.","Configurez les paramètres d'éditeur à remplacer pour un langage.","Impossible d'inscrire '{0}'. Ceci correspond au modèle de propriété '\\\\[.*\\\\]$' permettant de décrire les paramètres d'éditeur spécifiques à un langage. Utilisez la contribution 'configurationDefaults'.","Impossible d'inscrire '{0}'. Cette propriété est déjà inscrite."],"vs/platform/keybinding/common/abstractKeybindingService":["Touche ({0}) utilisée. En attente de la seconde touche pour la pression simultanée...","La combinaison de touches ({0}, {1}) n'est pas une commande."], +"vs/platform/list/browser/listService":["Banc d'essai","Mappe vers 'Contrôle' dans Windows et Linux, et vers 'Commande' dans macOS.","Mappe vers 'Alt' dans Windows et Linux, et vers 'Option' dans macOS.","Le modificateur à utiliser pour ajouter un élément à une multi-sélection avec la souris (par exemple dans l’Explorateur, des éditeurs ouverts et scm view). 'ctrlCmd' mappe vers 'Contrôle' dans Windows et Linux, et vers 'Commande' dans macOS. Les mouvements de souris 'Ouvrir sur le côté', si supportés, s'adaptent pour ne pas entrer en conflit avec le modificateur multiselect.","Contrôle l’ouverture des éléments dans les arbres et listes à l’aide de la souris (si pris en charge). Mettre la valeur `singleClick` pour ouvrir des éléments avec un simple clic de souris et `doubleClick` pour ouvrir uniquement via un double-clic de souris. Pour les parents ayant des enfants dans les arbres, ce paramètre contrôle si un simple clic développe le parent ou un double-clic. Notez que certains arbres et listes peuvent choisir d’ignorer ce paramètre, si ce n’est pas applicable. ","Contrôle si les arborescences prennent en charge le défilement horizontal dans le plan de travail."], +"vs/platform/markers/common/markers":["Erreur","Avertissement","Informations"], +"vs/platform/theme/common/colorRegistry":["Couleurs utilisées dans le banc d'essai.","Couleur de premier plan globale. Cette couleur est utilisée si elle n'est pas remplacée par un composant.","Couleur principale de premier plan pour les messages d'erreur. Cette couleur est utilisée uniquement si elle n'est pas redéfinie par un composant.","Couleur de bordure globale des éléments ayant le focus. Cette couleur est utilisée si elle n'est pas remplacée par un composant.","Bordure supplémentaire autour des éléments pour les séparer des autres et obtenir un meilleur contraste.","Bordure supplémentaire autour des éléments actifs pour les séparer des autres et obtenir un meilleur contraste.","Couleur des liens dans le texte.","Couleur d'arrière-plan des blocs de code dans le texte.","Couleur de l'ombre des widgets, comme rechercher/remplacer, au sein de l'éditeur.","Arrière-plan de la zone d'entrée.","Premier plan de la zone d'entrée.","Bordure de la zone d'entrée.","Couleur de la bordure des options activées dans les champs d'entrée.","Couleur d'arrière-plan de la validation d'entrée pour la gravité des informations.","Couleur de bordure de la validation d'entrée pour la gravité des informations.","Couleur d'arrière-plan de la validation d'entrée pour la gravité de l'avertissement.","Couleur de bordure de la validation d'entrée pour la gravité de l'avertissement.","Couleur d'arrière-plan de la validation d'entrée pour la gravité de l'erreur.","Couleur de bordure de la validation d'entrée pour la gravité de l'erreur. ","Couleur d'arrière-plan de la liste/l'arborescence pour l'élément ayant le focus quand la liste/l'arborescence est active. Une liste/aborescence active peut être sélectionnée au clavier, elle ne l'est pas quand elle est inactive.","Couleur de premier plan de la liste/l'arborescence pour l'élément ayant le focus quand la liste/l'arborescence est active. Une liste/aborescence active peut être sélectionnée au clavier, elle ne l'est pas quand elle est inactive.","Couleur d'arrière-plan de la liste/l'arborescence de l'élément sélectionné quand la liste/l'arborescence est active. Une liste/arborescence active peut être sélectionnée au clavier, elle ne l'est pas quand elle est inactive.","Couleur de premier plan de la liste/l'arborescence pour l'élément sélectionné quand la liste/l'arborescence est active. Une liste/aborescence active peut être sélectionnée au clavier, elle ne l'est pas quand elle est inactive.","Couleur d'arrière-plan de la liste/l'arborescence pour l'élément sélectionné quand la liste/l'arborescence est inactive. Une liste/aborescence active peut être sélectionnée au clavier, elle ne l'est pas quand elle est inactive.","Couleur de premier plan de la liste/l'arborescence pour l'élément sélectionné quand la liste/l'arborescence est active. Une liste/aborescence active peut être sélectionnée au clavier, elle ne l'est pas quand elle est inactive.","List/Tree background color for the focused item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.","Arrière-plan de la liste/l'arborescence pendant le pointage sur des éléments avec la souris.","Premier plan de la liste/l'arborescence pendant le pointage sur des éléments avec la souris.","Arrière-plan de l'opération de glisser-déplacer dans une liste/arborescence pendant le déplacement d'éléments avec la souris.","Couleur de premier plan dans la liste/l'arborescence pour la surbrillance des correspondances pendant la recherche dans une liste/arborescence.","Couleur du sélecteur rapide pour les étiquettes de regroupement.","Couleur du sélecteur rapide pour les bordures de regroupement.","Couleur de fond des badges. Les badges sont de courts libelés d'information, ex. le nombre de résultats de recherche.","Couleur des badges. Les badges sont de courts libelés d'information, ex. le nombre de résultats de recherche.","Ombre de la barre de défilement pour indiquer que la vue défile.","Couleur de fond du curseur de la barre de défilement.","Couleur de fond du curseur de la barre de défilement lors du survol.","Couleur d’arrière-plan de la barre de défilement lorsqu'on clique dessus.","Couleur de fond pour la barre de progression qui peut s'afficher lors d'opérations longues.","Couleur d'arrière-plan de l'éditeur.","Couleur de premier plan par défaut de l'éditeur.","Couleur d'arrière-plan des gadgets de l'éditeur tels que rechercher/remplacer.","Couleur de bordure des widgets de l'éditeur. La couleur est utilisée uniquement si le widget choisit d'avoir une bordure et si la couleur n'est pas remplacée par un widget.","Border color of the resize bar of editor widgets. The color is only used if the widget chooses to have a resize border and if the color is not overridden by a widget.","Couleur de la sélection de l'éditeur.","Couleur du texte sélectionné pour le contraste élevé.","Couleur de sélection dans un éditeur inactif. La couleur doit ne pas être opaque afin de ne pas masquer les décorations sous-jacentes.","Couleur des régions avec le même contenu que la sélection. La couleur doit ne pas être opaque afin de ne pas masquer les décorations sous-jacentes.","Couleur de bordure des régions dont le contenu est identique à la sélection.","Couleur du résultat de recherche actif.","Couleur des autres résultats de recherche correspondants. La couleur doit ne pas être opaque afin de ne pas masquer les décorations sous-jacentes.","Couleur de la plage limitant la recherche. La couleur ne doit pas être opaque pour ne pas masquer les décorations sous-jacentes.","Couleur de bordure du résultat de recherche actif.","Couleur de bordure des autres résultats de recherche.","Couleur de la bordure limitant la recherche. La couleur ne doit pas être opaque pour ne pas masquer les décorations sous-jacentes. ","Mettre en surbrillance ci-dessous le mot pour lequel un survol est affiché. La couleur doit ne pas être opaque afin de ne pas masquer les décorations sous-jacentes.","Couleur d'arrière-plan du pointage de l'éditeur.","Couleur de bordure du pointage de l'éditeur.","Couleur des liens actifs.","Couleur de fond pour le texte qui est inséré. La couleur ne doit pas être opaque pour ne pas masquer les décorations du dessous.","Couleur de fond pour le texte qui est retiré. La couleur doit ne pas être opaque pour ne pas masquer les décorations du dessous. ","Couleur de contour du texte inséré.","Couleur de contour du texte supprimé.","Border color between the two text editors.","Couleur du marqueur de la règle d'aperçu pour les correspondances trouvées. La couleur doit ne pas être opaque pour ne pas masquer les décorations du dessous.","Couleur du marqueur de la règle d'aperçu pour les mises en surbrillance de sélection. La couleur doit ne pas être opaque pour ne pas masquer les décorations du dessous."] +}); +//# sourceMappingURL=../../../min-maps/vs/editor/editor.main.nls.fr.js.map \ No newline at end of file diff --git a/app/monaco-editor/min/vs/editor/editor.main.nls.it.js b/app/monaco-editor/min/vs/editor/editor.main.nls.it.js new file mode 100644 index 00000000..e039bb13 --- /dev/null +++ b/app/monaco-editor/min/vs/editor/editor.main.nls.it.js @@ -0,0 +1,32 @@ +/*!----------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.14.6(6c8f02b41db9ae5c4d15df767d47755e5c73b9d5) + * Released under the MIT license + * https://github.com/Microsoft/vscode/blob/master/LICENSE.txt + *-----------------------------------------------------------*/ +define("vs/editor/editor.main.nls.it",{"vs/base/browser/ui/actionbar/actionbar":["{0} ({1})"],"vs/base/browser/ui/aria/aria":["{0} (nuova occorrenza)","{0} (occurred {1} times)"],"vs/base/browser/ui/findinput/findInput":["input"],"vs/base/browser/ui/findinput/findInputCheckboxes":["Maiuscole/minuscole","Parola intera","Usa espressione regolare"],"vs/base/browser/ui/inputbox/inputBox":["Errore: {0}","Avviso: {0}","Info: {0}"],"vs/base/browser/ui/list/listWidget":["{0}. Use the navigation keys to navigate."],"vs/base/browser/ui/menu/menu":["{0} ({1})"],"vs/base/common/keybindingLabels":["CTRL","MAIUSC","ALT","Windows","CTRL","MAIUSC","ALT","Super","CTRL","MAIUSC","ALT","Comando","CTRL","MAIUSC","ALT","Windows","CTRL","MAIUSC","ALT","Super"],"vs/base/common/severity":["Errore","Avviso","Informazioni"],"vs/base/parts/quickopen/browser/quickOpenModel":["{0}, selezione","selezione"], +"vs/base/parts/quickopen/browser/quickOpenWidget":["Selezione rapida. Digitare per ridurre il numero di risultati.","Selezione rapida","{0} Results"],"vs/editor/browser/controller/coreCommands":["&&Select All","&&Undo","&&Redo"],"vs/editor/browser/widget/codeEditorWidget":["Il numero di cursori è stato limitato a {0}."],"vs/editor/browser/widget/diffEditorWidget":["Non è possibile confrontare i file perché uno è troppo grande."],"vs/editor/browser/widget/diffReview":["Chiudi","nessuna linea","1 linea","{0} linee","Differenza {0} di {1}: originale {2}, {3}, modificate {4}, {5}","vuota","originali {0}, modificate {1}: {2}","+ modificate {0}: {1}","- originali {0}: {1}","Vai alla differenza successiva","Vai alla differenza precedente"], +"vs/editor/common/config/commonEditorConfig":["Editor","Controlla la famiglia di caratteri.","Controlla lo spessore del carattere.","Controlla le dimensioni del carattere in pixel.","Controlla l'altezza della riga. Usare 0 per calcolare l'altezza della riga dalle dimensioni del carattere.","Controlla la spaziatura tra le lettere in pixel.","I numeri di riga non vengono visualizzati.","I numeri di riga vengono visualizzati come numeri assoluti.","I numeri di riga vengono visualizzati come distanza in linee alla posizione del cursore.","I numeri di riga vengono visualizzati ogni 10 righe.","Controlla la visualizzazione dei numeri di riga.","Mostra righelli verticali dopo un certo numero di caratteri a spaziatura fissa. Utilizza più valori per più righelli. Nessun righello viene disegnati se la matrice è vuota","Caratteri che verranno usati come separatori di parola quando si eseguono operazioni o spostamenti correlati a parole","Il numero di spazi corrispondenti ad un carattere Tab. Questa impostazione viene sottoposta a override in base al contenuto dei file quando 'editor.detectIndentation' è 'on'.","È previsto 'number'. Nota: il valore \"auto\" è stato sostituito dall'impostazione `editor.detectIndentation`.","Inserire spazi quando si preme Tab. Questa impostazione viene sottoposta a override in base al contenuto dei file quando è 'editor.detectIndentation' è 'on'.","È previsto 'boolean'. Nota: il valore \"auto\" è stato sostituito dall'impostazione `editor.detectIndentation`.","All'apertura di un file, `editor.tabSize` e `editor.insertSpaces` verranno rilevati in base al contenuto del file.","Controlla se gli angoli delle selezioni sono arrotondati","Controlla se l'editor scorrerà oltre l'ultima riga","Controlla il numero di caratteri aggiuntivi oltre il quale l'editor scorrerà orizzontalmente","Controlla se per lo scorrimento dell'editor verrà usata un'animazione.","Controlla se la mini mappa è visualizzata","Definisce il lato in cui eseguire il rendering della mini mappa.","Controlla se lo slider della mini mappa viene nascosto automaticamente.","Esegue il rendering dei caratteri effettivi di una riga (in contrapposizione ai blocchi colore)","Limita la larghezza della mini mappa in modo da eseguire il rendering al massimo di un certo numero di colonne","Controls whether the hover is shown.","Time delay in milliseconds after which to the hover is shown.","Controls whether the hover should remain visible when mouse is moved over it.","Controlla se inizializzare la stringa di ricerca nel Widget Trova con il testo selezionato nell'editor","Controlla se l'impostazione Trova nella selezione è attivata quando vengono selezionati più caratteri o righe di testo nell'editor","Controlla se il widget Trova debba leggere o modificare gli appunti ricerche condivise su macOS","Il wrapping delle righe non viene eseguito.","Verrà eseguito il wrapping delle righe in base alla larghezza del viewport.","Verrà eseguito il wrapping delle righe alla posizione corrispondente a `editor.wordWrapColumn`.","Verrà eseguito il wrapping delle righe alla posizione minima del viewport e di `editor.wordWrapColumn`.","Controlla il wrapping delle righe. Valori possibili:\n - 'off' (disabilita il wrapping),\n - 'on' (wrapping del viewport),\n - 'wordWrapColumn' (esegue il wrapping alla posizione corrispondente a `editor.wordWrapColumn`) o\n - 'bounded' (esegue il wrapping alla posizione minima del viewport e di `editor.wordWrapColumn`).","Controlla la colonna di wrapping dell'editor quando il valore di `editor.wordWrap` è 'wordWrapColumn' o 'bounded'.","No indentation. Wrapped lines begin at column 1.","Wrapped lines get the same indentation as the parent.","Wrapped lines get +1 indentation toward the parent.","Wrapped lines get +2 indentation toward the parent.","Controlla il rientro delle righe con ritorno a capo. Può essere uno dei valori seguenti: 'none', 'same', 'indent' o 'deepIndent'.","Moltiplicatore da usare sui valori `deltaX` e `deltaY` degli eventi di scorrimento della rotellina del mouse","Rappresenta il tasto 'Control' (ctrl) su Windows e Linux e il tasto 'Comando' (cmd) su OSX.","Rappresenta il tasto 'Alt' su Windows e Linux e il tasto 'Opzione' su OSX.","Il modificatore da utilizzare per aggiungere molteplici cursori con il mouse. 'ctrlCmd' rappresenta il tasto 'Control' su Windows e Linux e il tasto 'Comando' su OSX. I gesti del mouse Vai a definizione e Apri il Link si adatteranno in modo da non entrare in conflitto con il modificatore multi-cursore.","Unire i cursori multipli se sovrapposti.","Abilita i suggerimenti rapidi all'interno di stringhe.","Abilita i suggerimenti rapidi all'interno di commenti.","Abilita i suggerimenti rapidi all'esterno di stringhe e commenti.","Controlla se visualizzare automaticamente i suggerimenti durante la digitazione","Controlla il ritardo in ms dopo il quale verranno visualizzati i suggerimenti rapidi","Abilita un popup che mostra documentazione sui parametri e informazioni sui tipi mentre si digita","Controlla se l'editor deve chiudere automaticamente le parentesi quadre dopo che sono state aperte","Controlla se l'editor deve formattare automaticamente la riga dopo la digitazione","Controlla se l'editor deve formattare automaticamente il contenuto incollato. Deve essere disponibile un formattatore che deve essere in grado di formattare un intervallo in un documento.","Controlla se l'editor deve correggere automaticamente l'indentazione mentre l'utente digita, incolla o sposta delle righe. Devono essere disponibili le regole di indentazione del linguaggio.","Controlla se i suggerimenti devono essere visualizzati automaticamente durante la digitazione dei caratteri trigger","Only accept a suggestion with `Enter` when it makes a textual change.","Controlla se i suggerimenti devono essere accettati con 'INVIO' in aggiunta a 'TAB'. In questo modo è possibile evitare ambiguità tra l'inserimento di nuove righe e l'accettazione di suggerimenti. Il valore 'smart' indica di accettare un suggerimento con 'INVIO' quando comporta una modifica al testo","Controlla se accettare i suggerimenti con i caratteri di commit. Ad esempio, in JavaScript il punto e virgola (';') può essere un carattere di commit che accetta un suggerimento e digita tale carattere.","Visualizza i suggerimenti dello snippet sopra gli altri suggerimenti.","Visualizza i suggerimenti dello snippet sotto gli altri suggerimenti.","Visualizza i suggerimenti degli snippet insieme agli altri suggerimenti.","Non mostrare i suggerimenti sugli snippet.","Controlla se i frammenti di codice sono visualizzati con altri suggerimenti e il modo in cui sono ordinati.","Consente di controllare se, quando si copia senza aver effettuato una selezione, viene copiata la riga corrente.","Controlla se calcolare i completamenti in base alle parole presenti nel documento.","Consente di selezionare sempre il primo suggerimento.","Consente di selezionare suggerimenti recenti a meno che continuando a digitare non ne venga selezionato uno, ad esempio `console.| -> console.log` perché `log` è stato completato di recente.","Consente di selezionare i suggerimenti in base a prefissi precedenti che hanno completato tali suggerimenti, ad esempio `co -> console` e `con -> const`.","Controlla la modalità di preselezione dei suggerimenti durante la visualizzazione degll'elenco dei suggerimenti.","Dimensioni del carattere per il widget dei suggerimenti","Altezza della riga per il widget dei suggerimenti","Controls whether filtering and sorting suggestions accounts for small typos.","Control whether an active snippet prevents quick suggestions.","Controlla se l'editor deve evidenziare gli elementi corrispondenti simili alla selezione","Controlla se l'editor deve evidenziare le occorrenze di simboli semantici","Controlla il numero di effetti che possono essere visualizzati nella stessa posizione nel righello delle annotazioni","Controlla se deve essere disegnato un bordo intorno al righello delle annotazioni.","Controllo dello stile di animazione del cursore.","Ingrandisce il carattere dell'editor quando si usa la rotellina del mouse e si tiene premuto CTRL","Controlla lo stile del cursore. I valori accettati sono 'block', 'block-outline', 'line', 'line-thin', 'underline' e 'underline-thin'","Controlla la larghezza del cursore quando editor.cursorSyle è impostato a 'line'","Abilita i caratteri legatura","Controlla se il cursore deve essere nascosto nel righello delle annotazioni.","Render whitespace characters except for single spaces between words.","Consente di controllare in che modo l'editor deve eseguire il rendering dei caratteri di spazio vuoto. Le opzioni possibili sono: 'none', 'boundary' e 'all'. Con l'opzione 'boundary' non viene eseguito il rendering di singoli spazi tra le parole.","Controlla se l'editor deve eseguire il rendering dei caratteri di controllo","Controlla se l'editor deve eseguire il rendering delle guide con rientro","Controls whether the editor should highlight the active indent guide.","Highlights both the gutter and the current line.","Consente di controllare in che modo l'editor deve eseguire il rendering dell'evidenziazione di riga corrente. Le opzioni possibili sono 'none', 'gutter', 'line' e 'all'.","Controlla se nell'editor è visualizzato CodeLens","Controlla se per l'editor è abilitata la riduzione del codice","Controlla in che modo vengono calcolati gli intervalli di riduzione. Con 'auto' viene usata l'eventuale strategia di riduzione specifica disponibile. Con 'indentation' viene usata forzatamente la strategia di riduzione basata sui rientri.","Controlla se i controlli di riduzione sul margine della barra di scorrimento sono automaticamente nascosti.","Evidenzia le parentesi corrispondenti quando se ne seleziona una.","Controlla se l'editor deve eseguire il rendering del margine verticale del glifo. Il margine del glifo viene usato principalmente per il debug.","Inserimento ed eliminazione dello spazio vuoto dopo le tabulazioni","Rimuovi lo spazio vuoto finale inserito automaticamente","Mantiene aperti gli editor rapidi anche quando si fa doppio clic sul contenuto o si preme ESC.","Controlla se l'editor consentire lo spostamento di selezioni tramite trascinamento della selezione.","L'editor utilizzerà API della piattaforma per rilevare quando è collegata un'utilità per la lettura dello schermo.","L'editor sarà definitivamente ottimizzato per l'utilizzo con un'utilità per la lettura dello schermo.","L'editor non sarà mai ottimizzato per l'utilizzo con un'utilità per la lettura dello schermo.","Controlla se l'editor deve essere eseguito in una modalità ottimizzata per le utilità per la lettura dello schermo.","Controls fading out of unused code.","Controlla se l'editor deve individuare i collegamenti e renderli cliccabili","Controlla se l'editor deve eseguire il rendering del selettore di colore e degli elementi Decorator di tipo colore inline.","Abilita il codice azione lightbulb","Eseguire l'organizzazione degli Imports durante il salvataggio?","Tipi di azione codice da eseguire durante il salvataggio.","Timeout per le azioni codice eseguite durante il salvataggio.","Controlla se gli appunti primari di Linux devono essere supportati.","Controlla se l'editor diff mostra le differenze affiancate o incorporate","Controlla se l'editor diff mostra come differenze le modifiche relative a spazi vuoti iniziali e finali","Gestione speciale dei file di grandi dimensioni per disabilitare alcune funzionalità che fanno un uso intensivo della memoria.","Consente di controllare se l'editor diff mostra gli indicatori +/- per le modifiche aggiunte/rimosse"], +"vs/editor/common/config/editorOptions":["L'editor non è accessibile in questo momento. Premere Alt+F1 per le opzioni.","Contenuto editor"],"vs/editor/common/controller/cursor":["Eccezione imprevista durante l'esecuzione del comando."],"vs/editor/common/modes/modesRegistry":["Testo normale"],"vs/editor/common/services/modelServiceImpl":["[{0}]\n{1}","[{0}] {1}"], +"vs/editor/common/view/editorColorRegistry":["Colore di sfondo per l'evidenziazione della riga alla posizione del cursore.","Colore di sfondo per il bordo intorno alla riga alla posizione del cursore.","Colore di sfondo degli intervalli evidenziati, ad esempio dalle funzionalità Quick Open e Trova. il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.","Colore di sfondo del bordo intorno agli intervalli selezionati.","Colore del cursore dell'editor.","Colore di sfondo del cursore editor. Permette di personalizzare il colore di un carattere quando sovrapposto da un blocco cursore.","Colore dei caratteri di spazio vuoto nell'editor.","Colore delle guide per i rientri dell'editor.","Colore delle guide di indentazione dell'editor attivo","Colore dei numeri di riga dell'editor.","Colore dei numeri per la riga attiva dell'editor","Id è deprecato. In alternativa utilizzare 'editorLineNumber.activeForeground'.","Colore dei numeri per la riga attiva dell'editor","Colore dei righelli dell'editor.","Colore primo piano delle finestre di CodeLens dell'editor","Colore di sfondo delle parentesi corrispondenti","Colore delle caselle di parentesi corrispondenti","Colore del bordo del righello delle annotazioni.","Colore di sfondo della barra di navigazione dell'editor. La barra contiene i margini di glifo e i numeri di riga.","Colore primo piano degli squiggle di errore nell'editor.","Colore del bordo degli squiggle di errore nell'editor.","Colore primo piano degli squiggle di avviso nell'editor","Colore del bordo degli squggle di avviso nell'editor.","Colore primo piano degli squiggle di informazione nell'editor","Colore del bordo degli squiggle di informazione nell'editor","Colore primo piano degli squiggle di suggerimento nell'editor.","Colore del bordo degli squiggle di suggerimento nell'editor.","Border of unnecessary code in the editor.","Opacity of unnecessary code in the editor.","Colore del marcatore del righello delle annotazioni per gli errori.","Colore del marcatore del righello delle annotazioni per gli avvisi.","Colore del marcatore del righello delle annotazioni per i messaggi di tipo informativo."], +"vs/editor/contrib/bracketMatching/bracketMatching":["Colore del marcatore del righello delle annotazioni per la corrispondenza delle parentesi.","Vai alla parentesi","Seleziona fino alla parentesi"],"vs/editor/contrib/caretOperations/caretOperations":["Sposta il punto di inserimento a sinistra","Sposta il punto di inserimento a destra"],"vs/editor/contrib/caretOperations/transpose":["Trasponi lettere"],"vs/editor/contrib/clipboard/clipboard":["Taglia","Cu&&t","Copia","&&Copy","Incolla","&&Paste","Copia con evidenziazione sintassi"],"vs/editor/contrib/codeAction/codeActionCommands":["Mostra correzioni ({0})","Mostra correzioni","Correzione rapida...","Azioni codice non disponibili","Azioni codice non disponibili","Effettua refactoring...","Refactoring non disponibili","Azione origine...","Azioni origine non disponibili","Organizza gli Imports","Azioni di organizzazione Imports non disponibili"], +"vs/editor/contrib/comment/comment":["Attiva/Disattiva commento per la riga","&&Toggle Line Comment","Aggiungi commento per la riga","Rimuovi commento per la riga","Attiva/Disattiva commento per il blocco","Toggle &&Block Comment"],"vs/editor/contrib/contextmenu/contextmenu":["Mostra il menu di scelta rapida editor"],"vs/editor/contrib/cursorUndo/cursorUndo":["Soft Undo"],"vs/editor/contrib/find/findController":["Trova","&&Find","Trova nella selezione","Trova successivo","Trova precedente","Trova selezione successiva","Trova selezione precedente","Sostituisci","&&Replace"],"vs/editor/contrib/find/findWidget":["Trova","Trova","Risultato precedente","Risultato successivo","Trova nella selezione","Chiudi","Sostituisci","Sostituisci","Sostituisci","Sostituisci tutto","Attiva/Disattiva modalità sostituzione","Solo i primi {0} risultati vengono evidenziati, ma tutte le operazioni di ricerca funzionano su tutto il testo.","{0} di {1}","Nessun risultato"], +"vs/editor/contrib/folding/folding":["Espandi","Espandi in modo ricorsivo","Riduci","Riduci in modo ricorsivo","Riduci tutti i blocchi commento","Riduci tutte le regioni","Espandi tutte le regioni","Riduci tutto","Espandi tutto","Livello riduzione {0}"],"vs/editor/contrib/fontZoom/fontZoom":["Zoom In del Font Editor","Zoom Reset del Font Editor","Reset dello Zoom del Font Editor"],"vs/editor/contrib/format/formatActions":["È stata apportata 1 modifica di formattazione a riga {0}","Sono state apportate {0} modifiche di formattazione a riga {1}","È stata apportata 1 modifica di formattazione tra le righe {0} e {1}","Sono state apportate {0} modifiche di formattazione tra le righe {1} e {2}","Non c'è alcun formattatore installato per i file '{0}'.","Formatta documento","Non è installato alcun formattatore di documenti per i file '{0}'.","Formatta selezione","Non è installato alcun formattatore di selezione per i file '{0}'."], +"vs/editor/contrib/goToDefinition/goToDefinitionCommands":["Non è stata trovata alcuna definizione per '{0}'","Non è stata trovata alcuna definizione"," - Definizioni di {0}","Vai alla definizione","Apri definizione lateralmente","Visualizza la definizione","Non sono state trovate implementazioni per '{0}'","Non sono state trovate implementazioni","- {0} implementazioni","Vai all'implementazione","Anteprima implementazione","Non sono state trovate definizioni di tipi per '{0}'","Non sono state trovate definizioni di tipi"," - {0} definizioni di tipo","Vai alla definizione di tipo","Anteprima definizione di tipo"],"vs/editor/contrib/goToDefinition/goToDefinitionMouse":["Fare clic per visualizzare {0} definizioni."],"vs/editor/contrib/gotoError/gotoError":["Vai al problema successivo (Errore, Avviso, Informazioni)","Vai al problema precedente (Errore, Avviso, Info)","Vai al Problema Successivo nei File (Error, Warning, Info)","Vai al Problema Precedente nei File (Error, Warning, Info) "], +"vs/editor/contrib/gotoError/gotoErrorWidget":["({0}/{1})","Colore per gli errori del widget di spostamento tra marcatori dell'editor.","Colore per gli avvisi del widget di spostamento tra marcatori dell'editor.","Colore delle informazioni del widget di navigazione marcatori dell'editor.","Sfondo del widget di spostamento tra marcatori dell'editor."],"vs/editor/contrib/hover/hover":["Visualizza passaggio del mouse"],"vs/editor/contrib/hover/modesContentHover":["Caricamento..."],"vs/editor/contrib/inPlaceReplace/inPlaceReplace":["Sostituisci con il valore precedente","Sostituisci con il valore successivo"], +"vs/editor/contrib/linesOperations/linesOperations":["Copia la riga in alto","&&Copy Line Up","Copia la riga in basso","Co&&py Line Down","Sposta la riga in alto","Mo&&ve Line Up","Sposta la riga in basso","Move &&Line Down","Ordinamento righe crescente","Ordinamento righe decrescente","Taglia spazio vuoto finale","Elimina la riga","Imposta un rientro per la riga","Riduci il rientro per la riga","Inserisci la riga sopra","Inserisci la riga sotto","Elimina tutto a sinistra","Elimina tutto a destra","Unisci righe","Trasponi caratteri intorno al cursore","Converti in maiuscolo","Converti in minuscolo"], +"vs/editor/contrib/links/links":["Cmd + clic per seguire il collegamento","CTRL + clic per seguire il collegamento","Cmd + click per eseguire il comando","Ctrl + clic per eseguire il comando","Opzione + clic per seguire il collegamento","Alt + clic per seguire il collegamento","Opzione + clic per eseguire il comando","Alt + clic per eseguire il comando","Non è stato possibile aprire questo collegamento perché il formato non è valido: {0}","Non è stato possibile aprire questo collegamento perché manca la destinazione.","Apri il collegamento"],"vs/editor/contrib/message/messageController":["Impossibile modificare nell'editor di sola lettura"], +"vs/editor/contrib/multicursor/multicursor":["Aggiungi cursore sopra","&&Add Cursor Above","Aggiungi cursore sotto","A&&dd Cursor Below","Aggiungi cursore alla fine delle righe","Add C&&ursors to Line Ends","Aggiungi selezione a risultato ricerca successivo","Add &&Next Occurrence","Aggiungi selezione a risultato ricerca precedente","Add P&&revious Occurrence","Sposta ultima selezione a risultato ricerca successivo","Sposta ultima selezione a risultato ricerca precedente","Seleziona tutte le occorrenze del risultato ricerca","Select All &&Occurrences","Cambia tutte le occorrenze"],"vs/editor/contrib/parameterHints/parameterHints":["Attiva i suggerimenti per i parametri"],"vs/editor/contrib/parameterHints/parameterHintsWidget":["{0}, suggerimento"],"vs/editor/contrib/referenceSearch/peekViewWidget":["Chiudi"],"vs/editor/contrib/referenceSearch/referenceSearch":[" - Riferimenti di {0}","Trova tutti i riferimenti"],"vs/editor/contrib/referenceSearch/referencesController":["Caricamento..."], +"vs/editor/contrib/referenceSearch/referencesModel":["simbolo in {0} alla riga {1} colonna {2}","1 simbolo in {0}, percorso completo {1}","{0} simboli in {1}, percorso completo {2}","Non sono stati trovati risultati","Trovato 1 simbolo in {0}","Trovati {0} simboli in {1}","Trovati {0} simboli in {1} file"], +"vs/editor/contrib/referenceSearch/referencesWidget":["Non è stato possibile risolvere il file.","{0} riferimenti","{0} riferimento","anteprima non disponibile","Riferimenti","Nessun risultato","Riferimenti","Colore di sfondo dell'area del titolo della visualizzazione rapida.","Colore del titolo della visualizzazione rapida.","Colore delle informazioni del titolo della visualizzazione rapida.","Colore dei bordi e della freccia della visualizzazione rapida.","Colore di sfondo dell'elenco risultati della visualizzazione rapida.","Colore primo piano dei nodi riga nell'elenco risultati della visualizzazione rapida.","Colore primo piano dei nodi file nell'elenco risultati della visualizzazione rapida.","Colore di sfondo della voce selezionata nell'elenco risultati della visualizzazione rapida.","Colore primo piano della voce selezionata nell'elenco risultati della visualizzazione rapida.","Colore di sfondo dell'editor di visualizzazioni rapide.","Colore di sfondo della barra di navigazione nell'editor visualizzazione rapida.","Colore dell'evidenziazione delle corrispondenze nell'elenco risultati della visualizzazione rapida.","Colore dell'evidenziazione delle corrispondenze nell'editor di visualizzazioni rapide.","Bordo dell'evidenziazione delle corrispondenze nell'editor di visualizzazioni rapide."], +"vs/editor/contrib/rename/rename":["Nessun risultato.","Correttamente rinominato '{0}' in '{1}'. Sommario: {2}","L'esecuzione dell'operazione di ridenominazione non è riuscita.","Rinomina simbolo"],"vs/editor/contrib/rename/renameInputField":["Consente di rinominare l'input. Digitare il nuovo nome e premere INVIO per eseguire il commit."],"vs/editor/contrib/smartSelect/smartSelect":["Espandi SELECT","&&Expand Selection","Comprimi SELECT","&&Shrink Selection"],"vs/editor/contrib/snippet/snippetVariables":["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato","Dom","Lun","Mar","Mer","Gio","Ven","Sab","Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre","Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],"vs/editor/contrib/suggest/suggestController":["L'accettazione di '{0}' ha inserito il seguente testo: {1}","Attiva suggerimento"], +"vs/editor/contrib/suggest/suggestWidget":["Colore di sfondo del widget dei suggerimenti.","Colore del bordo del widget dei suggerimenti.","Colore primo piano del widget dei suggerimenti.","Colore di sfondo della voce selezionata del widget dei suggerimenti.","Colore delle evidenziazioni corrispondenze nel widget dei suggerimenti.","Altre informazioni...{0}","{0}, suggerimento, con dettagli","{0}, suggerimento","Meno informazioni... {0}","Caricamento...","Non ci sono suggerimenti.","{0}, accettato","{0}, suggerimento, con dettagli","{0}, suggerimento"],"vs/editor/contrib/toggleTabFocusMode/toggleTabFocusMode":["Attiva/Disattiva l'uso di TAB per spostare lo stato attivo"], +"vs/editor/contrib/wordHighlighter/wordHighlighter":["Colore di sfondo di un simbolo durante l'accesso in lettura, ad esempio durante la lettura di una variabile. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.","Colore di sfondo di un simbolo durante l'accesso in scrittura, per esempio durante la scrittura di una variabile. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.","Colore del bordo di un simbolo durante l'accesso in lettura, ad esempio durante la lettura di una variabile.","Colore del bordo di un simbolo durante l'accesso in scrittura, ad esempio durante la scrittura in una variabile.","Colore del marcatore righello panoramica per evidenziazione simboli. Il colore non deve essere opaco per non nascondere decorazioni sottostanti.","Colore del marcatore righello panoramica per evidenziazione simboli con accesso in scrittura. Il colore non deve essere opaco per non nascondere decorazioni sottostanti.","Vai al prossimo simbolo evidenziato","Vai al precedente simbolo evidenziato"], +"vs/editor/standalone/browser/accessibilityHelp/accessibilityHelp":["No selection","Line {0}, Column {1} ({2} selected)","Line {0}, Column {1}","{0} selections ({1} characters selected)","{0} selections","Now changing the setting `accessibilitySupport` to 'on'.","Now opening the Editor Accessibility documentation page."," in a read-only pane of a diff editor."," in a pane of a diff editor."," in a read-only code editor"," in a code editor","To configure the editor to be optimized for usage with a Screen Reader press Command+E now.","To configure the editor to be optimized for usage with a Screen Reader press Control+E now.","The editor is configured to be optimized for usage with a Screen Reader.","The editor is configured to never be optimized for usage with a Screen Reader, which is not the case at this time.","Pressing Tab in the current editor will move focus to the next focusable element. Toggle this behavior by pressing {0}.","Pressing Tab in the current editor will move focus to the next focusable element. The command {0} is currently not triggerable by a keybinding.","Pressing Tab in the current editor will insert the tab character. Toggle this behavior by pressing {0}.","Pressing Tab in the current editor will insert the tab character. The command {0} is currently not triggerable by a keybinding.","Press Command+H now to open a browser window with more information related to editor accessibility.","Press Control+H now to open a browser window with more information related to editor accessibility.","You can dismiss this tooltip and return to the editor by pressing Escape or Shift+Escape.","Show Accessibility Help"], +"vs/editor/standalone/browser/inspectTokens/inspectTokens":["Developer: Inspect Tokens"],"vs/editor/standalone/browser/quickOpen/gotoLine":["Go to line {0} and character {1}","Go to line {0}","Type a line number between 1 and {0} to navigate to","Type a character between 1 and {0} to navigate to","Go to line {0}","Type a line number, followed by an optional colon and a character number to navigate to","Go to Line..."],"vs/editor/standalone/browser/quickOpen/quickCommand":["{0}, commands","Type the name of an action you want to execute","Command Palette"],"vs/editor/standalone/browser/quickOpen/quickOutline":["{0}, symbols","Type the name of an identifier you wish to navigate to","Go to Symbol...","symbols ({0})","modules ({0})","classes ({0})","interfaces ({0})","methods ({0})","functions ({0})","properties ({0})","variables ({0})","variables ({0})","constructors ({0})","calls ({0})"],"vs/editor/standalone/browser/simpleServices":["Made {0} edits in {1} files"], +"vs/editor/standalone/browser/standaloneCodeEditor":["Editor content","Press Ctrl+F1 for Accessibility Options.","Press Alt+F1 for Accessibility Options."],"vs/editor/standalone/browser/toggleHighContrast/toggleHighContrast":["Toggle High Contrast Theme"],"vs/platform/configuration/common/configurationRegistry":["Override configurazione predefinita","Consente di configurare le impostazioni dell'editor di cui eseguire l'override per il linguaggio {0}.","Consente di configurare le impostazioni dell'editor di cui eseguire l'override per un linguaggio.","Non è possibile registrare '{0}'. Corrisponde al criterio di proprietà '\\\\[.*\\\\]$' per la descrizione delle impostazioni dell'editor specifiche del linguaggio. Usare il contributo 'configurationDefaults'.","Non è possibile registrare '{0}'. Questa proprietà è già registrata."],"vs/platform/keybinding/common/abstractKeybindingService":["È stato premuto ({0}). In attesa del secondo tasto...","La combinazione di tasti ({0}, {1}) non è un comando."], +"vs/platform/list/browser/listService":["Area di lavoro","Rappresenta il tasto 'Control' (ctrl) su Windows e Linux e il tasto 'Comando' (cmd) su OSX.","Rappresenta il tasto 'Alt' su Windows e Linux e il tasto 'Opzione' su OSX.","Modificatore da usare per aggiungere un elemento in alberi ed elenchi a una selezione multipla con il mouse (ad esempio editor aperti e visualizzazione Gestione controllo servizi in Esplora risorse). 'ctrlCmd' rappresenta il tasto 'CTRL' in Windows e Linux e il tasto 'Cmd' in OSX. I gesti del mouse Apri lateralmente, se supportati, si adatteranno in modo da non entrare in conflitto con il modificatore di selezione multipla.","Controlla la modalità di apertura degli elementi in alberi ed elenchi con il mouse, se supportata. Impostare su `singleClick` per aprire gli elementi con un unico clic del mouse e `doubleClick` per aprirli solo se viene fatto doppio clic. Per gli elementi padre con elementi figlio negli alberi, questa impostazione controllerà se per espandere l'elemento padre è necessario fare clic una sola volta o fare doppio clic. Tenere presente che alcuni alberi ed elenchi potrebbero scegliere di ignorare questa impostazione se non è applicabile. ","Controlla se gli alberi supportano lo scorrimento orizzontale in workbench."], +"vs/platform/markers/common/markers":["Errore","Avviso","Informazioni"], +"vs/platform/theme/common/colorRegistry":["Colori usati nell'area di lavoro.","Colore primo piano. Questo colore è utilizzato solo se non viene sovrascritto da un componente.","Colore primo piano globale per i messaggi di errore. Questo colore è utilizzato solamente se non viene sottoposto a override da un componente.","Colore dei bordi degli elementi evidenziati. Questo colore è utilizzato solo se non viene sovrascritto da un componente.","Un bordo supplementare attorno agli elementi per contrastarli maggiormente rispetto agli altri.","Un bordo supplementare intorno agli elementi attivi per contrastarli maggiormente rispetto agli altri.","Colore primo piano dei link nel testo.","Colore sfondo per blocchi di codice nel testo.","Colore ombreggiatura dei widget, ad es. Trova/Sostituisci all'interno dell'editor.","Sfondo della casella di input.","Primo piano della casella di input.","Bordo della casella di input.","Colore del bordo di opzioni attivate nei campi di input.","Colore di sfondo di convalida dell'input di tipo Informazione.","Colore bordo di convalida dell'input di tipo Informazione.","Colore di sfondo di convalida dell'input di tipo Avviso.","Colore bordo di convalida dell'input di tipo Avviso.","Colore di sfondo di convalida dell'input di tipo Errore.","Colore bordo di convalida dell'input di tipo Errore.","Colore sfondo Elenco/Struttura ad albero per l'elemento evidenziato quando l'Elenco/Struttura ad albero è attivo. Un Elenco/Struttura ad albero attivo\nha il focus della tastiera, uno inattivo no.","Colore primo piano Elenco/Struttura ad albero per l'elemento con stato attivo quando l'Elenco/Struttura ad albero è attivo. Un Elenco/Struttura ad albero attivo\nha il focus della tastiera, uno inattivo no.","Colore sfondo Elenco/Struttura ad albero per l'elemento selezionato quando l'Elenco/Struttura ad albero è attivo. Un Elenco/Struttura ad albero attivo\nha il focus della tastiera, uno inattivo no.","Colore primo piano Elenco/Struttura ad albero per l'elemento selezionato quando l'Elenco/Struttura ad albero è attivo. Un Elenco/Struttura ad albero attivo\nha il focus della tastiera, uno inattivo no.","Colore sfondo Elenco/Struttura ad albero per l'elemento selezionato quando l'Elenco/Struttura ad albero è inattivo. Un Elenco/Struttura ad albero attivo\nha il focus della tastiera, uno inattivo no.","Colore primo piano Elenco/Struttura ad albero per l'elemento selezionato quando l'Elenco/Struttura ad albero è inattivo. Un Elenco/Struttura ad albero attivo\nha il focus della tastiera, uno inattivo no.","List/Tree background color for the focused item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.","Sfondo Elenco/Struttura ad albero al passaggio del mouse sugli elementi.","Primo piano Elenco/Struttura ad albero al passaggio del mouse sugli elementi.","Sfondo Elenco/Struttura ad albero durante il trascinamento degli elementi selezionati.","Colore primo piano Elenco/Struttura ad albero delle occorrenze trovate durante la ricerca nell'Elenco/Struttura ad albero.","Colore di selezione rapida per il raggruppamento delle etichette.","Colore di selezione rapida per il raggruppamento dei bordi.","Colore di sfondo del badge. I badge sono piccole etichette informative, ad esempio per mostrare il conteggio dei risultati di una ricerca.","Colore primo piano del badge. I badge sono piccole etichette informative, ad esempio per mostrare il conteggio dei risultati di una ricerca.","Ombra di ScrollBar per indicare lo scorrimento della visualizzazione.","Colore di sfondo dello slider della barra di scorrimento.","Colore di sfondo dello Slider della Barra di scorrimento al passaggio del mouse.","Colore di sfondo del cursore della barra di scorrimento quando cliccata.","Colore di sfondo dell'indicatore di stato che può essere mostrato durante l'esecuzione di operazioni lunghe.","Colore di sfondo dell'editor.","Colore primo piano predefinito dell'editor.","Colore di sfondo dei widget dell'editor, ad esempio Trova/Sostituisci.","Colore bordo dei widget dell'editor. Il colore viene utilizzato solo se il widget sceglie di avere un bordo e se il colore non è sottoposto a override da un widget.","Border color of the resize bar of editor widgets. The color is only used if the widget chooses to have a resize border and if the color is not overridden by a widget.","Colore della selezione dell'editor.","Colore del testo selezionato per il contrasto elevato.","Colore della selezione in un editor non attivo. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.","Colore delle aree con lo stesso contenuto della selezione. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.","Colore del bordo delle regioni con lo stesso contenuto della selezione.","Colore della corrispondenza di ricerca corrente.","Colore degli altri risultati della ricerca. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.","Colore dell'intervallo di limite della ricerca. Il colore non deve essere opaco per non nascondere decorazioni sottostanti.","Colore del bordo della corrispondenza della ricerca corrente.","Colore del bordo delle altre corrispondenze della ricerca.","Colore del bordo dell'intervallo di limite della ricerca. Il colore non deve essere opaco per non nascondere decorazioni sottostanti.","Evidenziazione sotto la parola per cui è visualizzata un'area sensibile al passaggio del mouse. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.","Colore di sfondo dell'area sensibile al passaggio del mouse dell'editor.","Colore del bordo dell'area sensibile al passaggio del mouse dell'editor.","Colore dei collegamenti attivi.","Colore di sfondo per il testo che è stato inserito. Il colore non deve essere opaco per non nascondere le decorazioni sottostanti.","Colore di sfondo per il testo che è stato rimosso. Il colore non deve essere opaco per non nascondere le decorazioni sottostanti.","Colore del contorno del testo che è stato inserito.","Colore del contorno del testo che è stato rimosso.","Border color between the two text editors.","Colore del marcatore righello panoramica per trovare corrispondenze. Il colore non deve essere opaco per non nascondere decorazioni sottostanti.","Colore del marcatore righello panoramica per evidenziazione selezioni. Il colore non deve essere opaco per non nascondere decorazioni sottostanti."] +}); +//# sourceMappingURL=../../../min-maps/vs/editor/editor.main.nls.it.js.map \ No newline at end of file diff --git a/app/monaco-editor/min/vs/editor/editor.main.nls.ja.js b/app/monaco-editor/min/vs/editor/editor.main.nls.ja.js new file mode 100644 index 00000000..3f7b98c8 --- /dev/null +++ b/app/monaco-editor/min/vs/editor/editor.main.nls.ja.js @@ -0,0 +1,25 @@ +/*!----------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.14.6(6c8f02b41db9ae5c4d15df767d47755e5c73b9d5) + * Released under the MIT license + * https://github.com/Microsoft/vscode/blob/master/LICENSE.txt + *-----------------------------------------------------------*/ +define("vs/editor/editor.main.nls.ja",{"vs/base/browser/ui/actionbar/actionbar":["{0} ({1})"],"vs/base/browser/ui/aria/aria":["{0} (再発)","{0} (occurred {1} times)"],"vs/base/browser/ui/findinput/findInput":["入力"],"vs/base/browser/ui/findinput/findInputCheckboxes":["大文字と小文字を区別する","単語単位で検索する","正規表現を使用する"],"vs/base/browser/ui/inputbox/inputBox":["エラー: {0}","警告: {0}","情報: {0}"],"vs/base/browser/ui/list/listWidget":["{0}. Use the navigation keys to navigate."],"vs/base/browser/ui/menu/menu":["{0} ({1})"],"vs/base/common/keybindingLabels":["Ctrl","Shift","Alt","Windows","Ctrl","Shift","Alt","Super","Control","Shift","Alt","コマンド","Control","Shift","Alt","Windows","Control","Shift","Alt","Super"],"vs/base/common/severity":["エラー","警告","情報"],"vs/base/parts/quickopen/browser/quickOpenModel":["{0}, ピッカー","選択"],"vs/base/parts/quickopen/browser/quickOpenWidget":["クイック選択。入力すると結果が絞り込まれます。","クイック選択","{0} Results"],"vs/editor/browser/controller/coreCommands":["&&Select All","&&Undo","&&Redo"], +"vs/editor/browser/widget/codeEditorWidget":["カーソルの数は {0} 個に制限されています。"],"vs/editor/browser/widget/diffEditorWidget":["一方のファイルが大きすぎるため、ファイルを比較できません。"],"vs/editor/browser/widget/diffReview":["閉じる","行なし","1 行","{0} 行","{1} の差異 {0}: 変更前 {2}, {3}, 変更後 {4}, {5}","空白","変更前の {0}、変更後の {1}: {2}","+ 変更後の {0}: {1}","- 変更前の {0}: {1}","次の差分に移動","前の差分に移動"], +"vs/editor/common/config/commonEditorConfig":["エディター","フォント ファミリを制御します。","フォントの太さを制御します。","フォント サイズをピクセル単位で制御します。","行の高さを制御します。fontSize に基づいて lineHeight を計算する場合には、0 を使用します。","文字の間隔をピクセル単位で制御します。","行番号は表示されません。","行番号は、絶対数として表示されます。","行番号は、カーソル位置までの行数として表示されます。","行番号は 10 行ごとに表示されます。","行番号の表示を制御します。","等幅フォントの特定番号の後ろに垂直ルーラーを表示します。複数のルーラーには複数の値を使用します。配列が空の場合はルーラーを表示しません。","単語に関連したナビゲーションまたは操作を実行するときに、単語の区切り文字として使用される文字","1 つのタブに相当するスペースの数。`editor.detectIndentation` がオンの場合、この設定はファイル コンテンツに基づいて上書きされます。","'number' が必要です。`editor.detectIndentation` 設定によって値 \"auto\" が置き換えられていることに注意してください。","Tab キーを押すとスペースが挿入されます。`editor.detectIndentation` がオンの場合、この設定はファイル コンテンツに基づいて上書きされます。","'boolean' が必要です。`editor.detectIndentation` 設定によって値 \"auto\" が置き換えられていることに注意してください。","ファイルを開くと、そのファイルの内容に基づいて `editor.tabSize` と `editor.insertSpaces` が検出されます。","選択範囲の角を丸くするかどうかを制御します","エディターで最後の行を越えてスクロールするかどうかを制御します","エディターが水平方向に余分にスクロールする文字数を制御します","アニメーションでエディターをスクロールするかどうかを制御します","ミニマップを表示するかどうかを制御します","ミニマップを表示する場所を制御します。","ミニマップのスライダーを自動的に非表示にするかどうかを制御します。","行に (カラー ブロックではなく) 実際の文字を表示します","表示するミニマップの最大幅を特定の桁数に制限します","Controls whether the hover is shown.","Time delay in milliseconds after which to the hover is shown.","Controls whether the hover should remain visible when mouse is moved over it.","エディターの選択から検索ウィジェット内の検索文字列を与えるかどうかを制御します","エディター内で複数の文字もしくは行が選択されているときに選択範囲を検索するフラグを有効にするかどうかを制御します","macOS で検索ウィジェットが共有の検索クリップボードを読み取りまたは変更するかどうかを制御します","行を折り返しません。","行をビューポートの幅で折り返します。","行を 'editor.wordWrapColumn' で折り返します。","ビューポートと 'editor.wordWrapColumn' の最小値で行を折り返します。","行の折り返し方法を制御します。次の値を指定できます。\n - 'off' (折り返さない),\n - 'on' (ビューポート折り返し),\n - 'wordWrapColumn' ('editor.wordWrapColumn' で折り返し) or\n - 'bounded' (ビューポートと 'editor.wordWrapColumn' の最小値で折り返し).","'editor.wordWrap' が 'wordWrapColumn' または 'bounded' の場合に、エディターの折り返し桁を制御します。","No indentation. Wrapped lines begin at column 1.","Wrapped lines get the same indentation as the parent.","Wrapped lines get +1 indentation toward the parent.","Wrapped lines get +2 indentation toward the parent.","折り返し行のインデントを制御します。'none'、'same'、'indent' または 'deepIndent' のいずれかを指定できます。","マウス ホイール スクロール イベントの `deltaX` と `deltaY` で使用される乗数","Windows および Linux 上の `Control` キーと macOS 上の `Command` キーに割り当てます。","Windows および Linux 上の `Alt` キーと macOS 上の `Option` キーに割り当てます。","マウスを使用して複数のカーソルを追加するときに使用する修飾キーです。`ctrlCmd` は Windows および Linux 上の `Control` キーと macOS 上の `Command` キーに割り当てます。「定義に移動」や「リンクを開く」のマウス操作は、マルチカーソルの修飾キーと競合しないように適用されます。","複数のカーソルが重なっているときは、マージします。","文字列内でクイック候補を有効にします。","コメント内でクイック候補を有効にします。","文字列およびコメント外でクイック候補を有効にします。","入力中に候補を自動的に表示するかどうかを制御します","クイック候補が表示されるまでの待ち時間 (ミリ秒) を制御します","入力時にパラメーター ドキュメントと型情報を表示するポップアップを有効にする","エディターで左角かっこの後に自動的に右角かっこを挿入するかどうかを制御します","エディターで入力後に自動的に行の書式設定を行うかどうかを制御します","貼り付けた内容がエディターにより自動的にフォーマットされるかどうかを制御します。フォーマッタを使用可能にする必要があります。また、フォーマッタがドキュメント内の範囲をフォーマットできなければなりません。","ユーザーが入力や貼り付け、行の移動をしたとき、エディターがインデントを自動的に調整するかどうかを制御します。言語のインデント ルールを使用できる必要があります。","トリガー文字の入力時に候補が自動的に表示されるようにするかどうかを制御します","Only accept a suggestion with `Enter` when it makes a textual change.","'Tab' キーに加えて 'Enter' キーで候補を受け入れるかどうかを制御します。改行の挿入や候補の反映の間であいまいさを解消するのに役立ちます。'smart' 値は文字を変更するときに、Enter キーを押すだけで提案を反映することを意味します。","コミット文字で候補を受け入れるかどうかを制御します。たとえば、JavaScript ではセミコロン (';') をコミット文字にして、候補を受け入れてその文字を入力することができます。","他の候補の上にスニペットの候補を表示します。","他の候補の下にスニペットの候補を表示します。","他の候補と一緒にスニペットの候補を表示します。","スニペットの候補を表示しません。","他の修正候補と一緒にスニペットを表示するかどうか、およびその並び替えの方法を制御します。","選択範囲を指定しないでコピーする場合に現在の行をコピーするかどうかを制御します。","ドキュメント内の単語に基づいて入力候補を計算するかどうかを制御します。","常に最初の候補を選択します。","追加入力によって選択されたものがなければ、最近の候補を選択します。例: `console.| -> console.log` (`log` は最近入力されたため)。","これらの候補を入力した前のプレフィックスに基づいて候補を選択します。例: `co -> console`、`con -> const`。","候補リストを表示するときに候補を事前に選択する方法を制御します。","候補のウィジェットのフォント サイズ","候補のウィジェットの行の高さ","Controls whether filtering and sorting suggestions accounts for small typos.","Control whether an active snippet prevents quick suggestions.","エディターで選択範囲に類似する一致箇所を強調表示するかどうかを制御します","エディターでセマンティック シンボルの出現箇所を強調表示するかどうかを制御します","概要ルーラーの同じ位置に表示できる装飾の数を制御します","概要ルーラーの周囲に境界線が描画されるかどうかを制御します。","カーソルのアニメーション方式を制御します。","Ctrl キーを押しながらマウス ホイールを使用してエディターのフォントをズームします","カーソルのスタイルを制御します。指定できる値は 'block'、'block-outline'、'line'、'line-thin'、'underline'、'underline-thin' です","editor.cursorStyle が 'line' に設定されている場合、カーソルの幅を制御する","フォントの合字を使用します","概要ルーラーでカーソルを非表示にするかどうかを制御します。","Render whitespace characters except for single spaces between words.","エディターで空白文字を表示する方法を制御します。'none'、'boundary' および 'all' が使用可能です。'boundary' オプションでは、単語間の単一スペースは表示されません。","エディターで制御文字を表示する必要があるかどうかを制御します","エディターでインデントのガイドを表示する必要があるかどうかを制御します","Controls whether the editor should highlight the active indent guide.","Highlights both the gutter and the current line.","エディターが現在の行をどのように強調表示するかを制御します。考えられる値は 'none'、'gutter'、'line'、'all' です。","エディターが CodeLens を表示するかどうかを制御します","エディターでコードの折りたたみを有効にするかどうかを制御します","折りたたみ範囲の計算方法を制御します。'auto' は利用可能であれば言語固有の折りたたみ方式を使用します。'indentation' は常にインデントに基づく折りたたみ方式を使用します。","余白上の折りたたみコントロールを自動的に非表示にするかどうかを制御します 。","かっこを選択すると、対応するかっこを強調表示します。","エディターで縦のグリフ余白が表示されるかどうかを制御します。ほとんどの場合、グリフ余白はデバッグに使用されます。","空白の挿入や削除はタブ位置に従って行われます","自動挿入された末尾の空白を削除する","エディターのコンテンツをダブルクリックするか、Esc キーを押しても、ピーク エディターを開いたままにします。","ドラッグ アンド ドロップによる選択範囲の移動をエディターが許可する必要があるかどうかを制御します。","エディターはスクリーン リーダーがいつ接続されたかを検出するためにプラットフォーム API を使用します。","エディターは永続的にスクリーン リーダー向けに最適化されます。","エディターはスクリーン リーダー向けに最適化されません。","エディターをスクリーン リーダーに最適化されたモードで実行するかどうかを制御します。","Controls fading out of unused code.","エディターがリンクを検出してクリック可能な状態にするかどうかを制御します","エディターでインライン カラー デコレーターと色の選択を表示する必要があるかどうかを制御します。","コード アクション (lightbulb) を有効にする","保存時にインポートの整理を実行しますか?","保存時に実行されるコードアクションの種類。","保存時に実行されるコード アクションのタイムアウト値。","Linux の PRIMARY クリップボードをサポートするかどうかを制御します。","差分エディターが差分を横に並べて表示するか、行内に表示するかを制御します","差分エディターが、先頭または末尾の空白の変更を差分として表示するかどうかを制御します。","大きなファイルでメモリが集中する特定の機能を無効にするための特別な処理。","差分エディターが追加/削除された変更に +/- インジケーターを示すかどうかを制御します"], +"vs/editor/common/config/editorOptions":["現在エディターにアクセスすることはできません。 Alt + F1 キーを押してオプションを選択します。","エディターのコンテンツ"],"vs/editor/common/controller/cursor":["コマンドの実行中に予期しない例外が発生しました。"],"vs/editor/common/modes/modesRegistry":["プレーンテキスト"],"vs/editor/common/services/modelServiceImpl":["[{0}]\n{1}","[{0}] {1}"], +"vs/editor/common/view/editorColorRegistry":["カーソル位置の行を強調表示する背景色。","カーソル位置の行の境界線を強調表示する背景色。","Quick Open 機能や検索機能などによって強調表示された範囲の背景色。下にある装飾を隠さないために、色は不透過であってはなりません。","強調表示された範囲の境界線の背景色。","エディターのカーソルの色。","選択された文字列の背景色です。選択された文字列の背景色をカスタマイズ出来ます。","エディターのスペース文字の色。","エディター インデント ガイドの色。","アクティブなエディターのインデント ガイドの色。","エディターの行番号の色。","エディターのアクティブ行番号の色","id は使用しないでください。代わりに 'EditorLineNumber.activeForeground' を使用してください。","エディターのアクティブ行番号の色","エディター ルーラーの色。","CodeLens エディターの前景色。","一致するかっこの背景色","一致するかっこ内のボックスの色","概要ルーラーの境界色。","エディターの余白の背景色。余白にはグリフ マージンと行番号が含まれます。","エディターでエラーを示す波線の前景色。","エディターでエラーを示す波線の境界線の色。","エディターで警告を示す波線の前景色。","エディターで警告を示す波線の境界線の色。","エディターで情報を示す波線の前景色。","エディターで情報を示す波線の境界線の色。","エディターでヒントを示す波線の前景色。","エディターでヒントを示す波線の境界線の色。","Border of unnecessary code in the editor.","Opacity of unnecessary code in the editor.","エラーを示す概要ルーラーのマーカー色。","警告を示す概要ルーラーのマーカー色。","情報を示す概要ルーラーのマーカー色。"],"vs/editor/contrib/bracketMatching/bracketMatching":["一致するブラケットを示す概要ルーラーのマーカー色。","ブラケットへ移動","ブラケットに選択"], +"vs/editor/contrib/caretOperations/caretOperations":["キャレットを左に移動","キャレットを右に移動"],"vs/editor/contrib/caretOperations/transpose":["文字の入れ替え"],"vs/editor/contrib/clipboard/clipboard":["切り取り","Cu&&t","コピー","&&Copy","貼り付け","&&Paste","構文を強調表示してコピー"],"vs/editor/contrib/codeAction/codeActionCommands":["修正プログラム ({0}) を表示する","修正プログラムを表示する","クイック フィックス...","利用可能なコード アクションはありません","利用可能なコード アクションはありません","リファクター...","利用可能なリファクタリングはありません","ソース アクション...","利用可能なソース アクションはありません","インポートを整理","利用可能なインポートの整理アクションはありません"],"vs/editor/contrib/comment/comment":["行コメントの切り替え","&&Toggle Line Comment","行コメントの追加","行コメントの削除","ブロック コメントの切り替え","Toggle &&Block Comment"],"vs/editor/contrib/contextmenu/contextmenu":["エディターのコンテキスト メニューの表示"],"vs/editor/contrib/cursorUndo/cursorUndo":["Soft Undo"],"vs/editor/contrib/find/findController":["検索","&&Find","選択範囲を検索","次を検索","前を検索","次の選択項目を検索","前の選択項目を検索","置換","&&Replace"], +"vs/editor/contrib/find/findWidget":["検索","検索","前の一致項目","次の一致項目","選択範囲を検索","閉じる","置換","置換","置換","すべて置換","置換モードの切り替え","最初の {0} 件の結果だけが強調表示されますが、すべての検索操作はテキスト全体で機能します。","{0} / {1} 件","結果なし"],"vs/editor/contrib/folding/folding":["展開","再帰的に展開","折りたたみ","再帰的に折りたたむ","すべてのブロック コメントの折りたたみ","すべての領域を折りたたむ","すべての領域を展開","すべて折りたたみ","すべて展開","レベル {0} で折りたたむ"],"vs/editor/contrib/fontZoom/fontZoom":["エディターのフォントを拡大","エディターのフォントを縮小","エディターのフォントのズームをリセット"],"vs/editor/contrib/format/formatActions":["行 {0} で 1 つの書式設定を編集","行 {1} で {0} 個の書式設定を編集","行 {0} と {1} の間で 1 つの書式設定を編集","行 {1} と {2} の間で {0} 個の書式設定を編集","インストールされた '{0}'ファイル用のフォーマッターが存在しません。","ドキュメントのフォーマット","インストールされた '{0}'ファイル用のドキュメント フォーマッターが存在しません。","選択範囲のフォーマット","インストールされた '{0}' ファイル用の選択範囲フォーマッターが存在しません。"],"vs/editor/contrib/goToDefinition/goToDefinitionCommands":["'{0}' の定義は見つかりません","定義が見つかりません"," – {0} 個の定義","定義へ移動","定義を横に開く","定義をここに表示","'{0}' の実装が見つかりません","実装が見つかりません","– {0} 個の実装","実装に移動","実装のプレビュー","'{0}' の型定義が見つかりません","型定義が見つかりません"," – {0} 個の型定義","型定義へ移動","型定義を表示"], +"vs/editor/contrib/goToDefinition/goToDefinitionMouse":["クリックして、{0} の定義を表示します。"],"vs/editor/contrib/gotoError/gotoError":["次の問題 (エラー、警告、情報) へ移動","前の問題 (エラー、警告、情報) へ移動","ファイル内の次の問題 (エラー、警告、情報) へ移動","ファイル内の前の問題 (エラー、警告、情報) へ移動"],"vs/editor/contrib/gotoError/gotoErrorWidget":["({0}/{1})","エディターのマーカー ナビゲーション ウィジェットのエラーの色。","エディターのマーカー ナビゲーション ウィジェットの警告の色。","エディターのマーカー ナビゲーション ウィジェットの情報の色。","エディターのマーカー ナビゲーション ウィジェットの背景。"],"vs/editor/contrib/hover/hover":["ホバーの表示"],"vs/editor/contrib/hover/modesContentHover":["読み込んでいます..."],"vs/editor/contrib/inPlaceReplace/inPlaceReplace":["前の値に置換","次の値に置換"],"vs/editor/contrib/linesOperations/linesOperations":["行を上へコピー","&&Copy Line Up","行を下へコピー","Co&&py Line Down","行を上へ移動","Mo&&ve Line Up","行を下へ移動","Move &&Line Down","行を昇順に並べ替え","行を降順に並べ替え","末尾の空白のトリミング","行の削除","行のインデント","行のインデント解除","行を上に挿入","行を下に挿入","左側をすべて削除","右側をすべて削除","行をつなげる","カーソルの周囲の文字を入れ替える","大文字に変換","小文字に変換"], +"vs/editor/contrib/links/links":["command キーを押しながらクリックしてリンク先を表示","Ctrl キーを押しながらクリックしてリンク先を表示","command キーを押しながらクリックしてコマンドを実行","Ctrl キーを押しながらクリックしてコマンドを実行","Option キーを押しながらクリックしてリンク先を表示","Altl キーを押しながらクリックしてリンク先を表示","Option キーを押しながらクリックしてコマンドを実行","Alt キーを押しながらクリックしてコマンドを実行","このリンクは形式が正しくないため開くことができませんでした: {0}","このリンクはターゲットが存在しないため開くことができませんでした。","リンクを開く"],"vs/editor/contrib/message/messageController":["読み取り専用のエディターは編集できません"],"vs/editor/contrib/multicursor/multicursor":["カーソルを上に挿入","&&Add Cursor Above","カーソルを下に挿入","A&&dd Cursor Below","カーソルを行末に挿入","Add C&&ursors to Line Ends","選択項目を次の一致項目に追加","Add &&Next Occurrence","選択項目を次の一致項目に追加","Add P&&revious Occurrence","最後に選択した項目を次の一致項目に移動","最後に選択した項目を前の一致項目に移動","一致するすべての出現箇所を選択","Select All &&Occurrences","すべての出現箇所を変更"],"vs/editor/contrib/parameterHints/parameterHints":["パラメーター ヒントをトリガー"],"vs/editor/contrib/parameterHints/parameterHintsWidget":["{0}、ヒント"],"vs/editor/contrib/referenceSearch/peekViewWidget":["閉じる"], +"vs/editor/contrib/referenceSearch/referenceSearch":["– {0} 個の参照","すべての参照の検索"],"vs/editor/contrib/referenceSearch/referencesController":["読み込んでいます..."],"vs/editor/contrib/referenceSearch/referencesModel":["列 {2} の {1} 行目に {0} つのシンボル","{0} に 1 個のシンボル、完全なパス {1}","{1} に {0} 個のシンボル、完全なパス {2}","一致する項目はありません","{0} に 1 個のシンボルが見つかりました","{1} に {0} 個のシンボルが見つかりました","{1} 個のファイルに {0} 個のシンボルが見つかりました"],"vs/editor/contrib/referenceSearch/referencesWidget":["ファイルを解決できませんでした。","{0} 個の参照","{0} 個の参照","プレビューを表示できません","参照","結果がありません","参照","ピーク ビューのタイトル領域の背景色。","ピーク ビュー タイトルの色。","ピーク ビューのタイトル情報の色。","ピーク ビューの境界と矢印の色。","ピーク ビュー結果リストの背景色。","ピーク ビュー結果リストのライン ノードの前景色。","ピーク ビュー結果リストのファイル ノードの前景色。","ピーク ビュー結果リストの選択済みエントリの背景色。","ピーク ビュー結果リストの選択済みエントリの前景色。","ピーク ビュー エディターの背景色。","ピーク ビュー エディターの余白の背景色。","ピーク ビュー結果リストの一致した強調表示色。","ピーク ビュー エディターの一致した強調表示色。","ピーク ビュー エディターの一致した強調境界色。"],"vs/editor/contrib/rename/rename":["結果がありません。","'{0}' から '{1}' への名前変更が正常に完了しました。概要: {2}","名前の変更を実行できませんでした。","シンボルの名前を変更"], +"vs/editor/contrib/rename/renameInputField":["名前変更入力。新しい名前を入力し、Enter キーを押してコミットしてください。"],"vs/editor/contrib/smartSelect/smartSelect":["選択範囲を拡大","&&Expand Selection","選択範囲を縮小","&&Shrink Selection"],"vs/editor/contrib/snippet/snippetVariables":["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日","日","月","火","水","木","金","土","1 月","2 月","3 月","4 月","5 月","6 月","7 月","8 月","9 月","10 月","11 月","12 月","1 月","2 月","3 月","4 月","5 月","6 月","7 月","8 月","9 月","10 月","11 月","12 月"],"vs/editor/contrib/suggest/suggestController":["'{0}' が次のテキストを挿入したことを承認しています: {1}","候補をトリガー"],"vs/editor/contrib/suggest/suggestWidget":["候補のウィジェットの背景色。","候補ウィジェットの境界線色。","候補ウィジェットの前景色。","候補ウィジェット内で選択済みエントリの背景色。","候補のウィジェット内で一致したハイライトの色。","詳細を表示...{0}","{0}、候補、詳細あり","{0}、候補","詳細を隠す...{0}","読み込んでいます...","候補はありません。","{0}、受け入れ済み","{0}、候補、詳細あり","{0}、候補"],"vs/editor/contrib/toggleTabFocusMode/toggleTabFocusMode":["TAB キーのフォーカス移動を切り替え"], +"vs/editor/contrib/wordHighlighter/wordHighlighter":["変数の読み取りなど読み取りアクセス中のシンボルの背景色。下にある装飾を隠さないために、色は不透過であってはなりません。","変数への書き込みなど書き込みアクセス中のシンボルの背景色。下にある装飾を隠さないために、色は不透過であってはなりません。","変数の読み取りなど読み取りアクセス中のシンボルの境界線の色。","変数への書き込みなど書き込みアクセス中のシンボルの境界線の色。","シンボルを強調表示するときの概要ルーラーのマーカー色。この色は下地の色に紛れないよう不明瞭であってはいけません。","書き込みアクセス シンボルを強調表示するときの概要ルーラーのマーカー色。この色は下地の色に紛れないよう不明瞭であってはいけません。","次のシンボル ハイライトに移動","前のシンボル ハイライトに移動"], +"vs/editor/standalone/browser/accessibilityHelp/accessibilityHelp":["No selection","Line {0}, Column {1} ({2} selected)","Line {0}, Column {1}","{0} selections ({1} characters selected)","{0} selections","Now changing the setting `accessibilitySupport` to 'on'.","Now opening the Editor Accessibility documentation page."," in a read-only pane of a diff editor."," in a pane of a diff editor."," in a read-only code editor"," in a code editor","To configure the editor to be optimized for usage with a Screen Reader press Command+E now.","To configure the editor to be optimized for usage with a Screen Reader press Control+E now.","The editor is configured to be optimized for usage with a Screen Reader.","The editor is configured to never be optimized for usage with a Screen Reader, which is not the case at this time.","Pressing Tab in the current editor will move focus to the next focusable element. Toggle this behavior by pressing {0}.","Pressing Tab in the current editor will move focus to the next focusable element. The command {0} is currently not triggerable by a keybinding.","Pressing Tab in the current editor will insert the tab character. Toggle this behavior by pressing {0}.","Pressing Tab in the current editor will insert the tab character. The command {0} is currently not triggerable by a keybinding.","Press Command+H now to open a browser window with more information related to editor accessibility.","Press Control+H now to open a browser window with more information related to editor accessibility.","You can dismiss this tooltip and return to the editor by pressing Escape or Shift+Escape.","Show Accessibility Help"], +"vs/editor/standalone/browser/inspectTokens/inspectTokens":["Developer: Inspect Tokens"],"vs/editor/standalone/browser/quickOpen/gotoLine":["Go to line {0} and character {1}","Go to line {0}","Type a line number between 1 and {0} to navigate to","Type a character between 1 and {0} to navigate to","Go to line {0}","Type a line number, followed by an optional colon and a character number to navigate to","Go to Line..."],"vs/editor/standalone/browser/quickOpen/quickCommand":["{0}, commands","Type the name of an action you want to execute","Command Palette"],"vs/editor/standalone/browser/quickOpen/quickOutline":["{0}, symbols","Type the name of an identifier you wish to navigate to","Go to Symbol...","symbols ({0})","modules ({0})","classes ({0})","interfaces ({0})","methods ({0})","functions ({0})","properties ({0})","variables ({0})","variables ({0})","constructors ({0})","calls ({0})"],"vs/editor/standalone/browser/simpleServices":["Made {0} edits in {1} files"], +"vs/editor/standalone/browser/standaloneCodeEditor":["Editor content","Press Ctrl+F1 for Accessibility Options.","Press Alt+F1 for Accessibility Options."],"vs/editor/standalone/browser/toggleHighContrast/toggleHighContrast":["Toggle High Contrast Theme"],"vs/platform/configuration/common/configurationRegistry":["既定の構成オーバーライド","{0} 言語に対して上書きされるエディター設定を構成します。","言語に対して上書きされるエディター設定を構成します。","'{0}' を登録できません。これは、言語固有のエディター設定を記述するプロパティ パターン '\\\\[.*\\\\]$' に一致しています。'configurationDefaults' コントリビューションを使用してください。","'{0}' を登録できません。このプロパティは既に登録されています。"],"vs/platform/keybinding/common/abstractKeybindingService":["({0}) が押されました。2 番目のキーを待っています...","キーの組み合わせ ({0}、{1}) はコマンドではありません。"], +"vs/platform/list/browser/listService":["ワークベンチ","Windows および Linux 上の `Control` キーと macOS 上の `Command` キーに割り当てます。","Windows および Linux 上の `Alt` キーと macOS 上の `Option` キーに割り当てます。","マウスで複数の選択肢にツリーおよびリストの項目を追加するために使用される修飾子 (たとえば、エクスプローラーでエディターと scm ビューを開くなど)。`ctrlCmd` は、Windows と Linux では `Control` にマップされ、macOS では `Command` にマップされます。'横に並べて開く' マウス ジェスチャー (サポートされている場合) は、複数選択修飾子と競合しないように調整されます。","マウスを使用して、ツリーとリストで項目を開く方法を制御します (サポートされている場合)。'SingleClick' に設定すると、項目をマウスのシングル クリックで開き、'doubleClick' に設定すると、ダブル クリックでのみ開きます。ツリーで子を持つ親の場合、この設定で、親をシングル クリックで展開するか、ダブル クリックで展開するかを制御します。該当しない場合、一部のツリーとリストでは、この設定が無視される場合があることに注意してください。","ワークベンチでツリーが水平スクロールをサポートするかどうかを制御します。"],"vs/platform/markers/common/markers":["エラー","警告","情報"], +"vs/platform/theme/common/colorRegistry":["ワークベンチで使用する色。","全体の前景色。この色は、コンポーネントによってオーバーライドされていない場合にのみ使用されます。","エラー メッセージ全体の前景色。この色は、コンポーネントによって上書きされていない場合にのみ使用されます。","フォーカスされた要素の境界線全体の色。この色はコンポーネントによって上書きされていない場合にのみ使用されます。","コントラストを強めるために、他の要素と隔てる追加の境界線。","コントラストを強めるために、アクティブな他要素と隔てる追加の境界線。","テキスト内のリンクの前景色。","テキスト内のコード ブロックの背景色。","エディター内の検索/置換窓など、エディター ウィジェットの影の色。","入力ボックスの背景。","入力ボックスの前景。","入力ボックスの境界線。","入力フィールドのアクティブ オプションの境界線の色。","情報の重大度を示す入力検証の背景色。","情報の重大度を示す入力検証の境界線色。","警告の重大度を示す入力検証の背景色。","警告の重大度を示す入力検証の境界線色。","エラーの重大度を示す入力検証の背景色。","エラーの重大度を示す入力検証の境界線色。","ツリーリストがアクティブのとき、フォーカスされた項目のツリーリスト背景色。アクティブなツリーリストはキーボード フォーカスがあり、非アクティブではこれがありません。","ツリーリストがアクティブのとき、フォーカスされた項目のツリーリスト前景色。アクティブなツリーリストはキーボード フォーカスがあり、非アクティブではこれがありません。","ツリーリストがアクティブのとき、選択された項目のツリーリスト背景色。アクティブなツリーリストはキーボード フォーカスがあり、非アクティブではこれがありません。","ツリーリストがアクティブのとき、選択された項目のツリーリスト前景色。アクティブなツリーリストはキーボード フォーカスがあり、非アクティブではこれがありません。","ツリーリストが非アクティブのとき、フォーカスされた項目のツリーリスト背景色。アクティブなツリーリストはキーボード フォーカスがあり、非アクティブではこれがありません。","ツリーリストが非アクティブのとき、選択された項目のツリーリスト前景色。アクティブなツリーリストはキーボード フォーカスがあり、非アクティブではこれがありません。","List/Tree background color for the focused item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.","マウス操作で項目をホバーするときのツリーリスト背景。","マウス操作で項目をホバーするときのツリーリスト前景。","マウス操作で項目を移動するときのツリーリスト ドラッグ アンド ドロップの背景。","ツリーリスト内を検索しているとき、一致した強調のツリーリスト前景色。","ラベルをグループ化するためのクリック選択の色。","境界線をグループ化するためのクイック選択の色。","バッジの背景色。バッジとは小さな情報ラベルのことです。例:検索結果の数","バッジの前景色。バッジとは小さな情報ラベルのことです。例:検索結果の数","ビューがスクロールされたことを示すスクロール バーの影。","スクロール バーのスライダーの背景色。","ホバー時のスクロール バー スライダー背景色。","クリック時のスクロール バー スライダー背景色。","時間のかかる操作で表示するプログレス バーの背景色。","エディターの背景色。","エディターの既定の前景色。","検索/置換窓など、エディター ウィジェットの背景色。","エディター ウィジェットの境界線色。ウィジェットに境界線があり、ウィジェットによって配色を上書きされていない場合でのみこの配色は使用されます。","Border color of the resize bar of editor widgets. The color is only used if the widget chooses to have a resize border and if the color is not overridden by a widget.","エディターの選択範囲の色。","ハイ コントラストの選択済みテキストの色。","非アクティブなエディターの選択範囲の色。下にある装飾を隠さないために、色は不透過であってはなりません。","選択範囲と同じコンテンツの領域の色。下にある装飾を隠さないために、色は不透過であってはなりません。","選択範囲と同じコンテンツの境界線の色。","現在の検索一致項目の色。","他の検索一致項目の色。下にある装飾を隠さないために、色は不透過であってはなりません。","検索を制限する範囲の色。下にある装飾を隠さないために、色は不透過であってはなりません。","現在の検索一致項目の境界線の色。","他の検索一致項目の境界線の色。","検索を制限する範囲の境界線の色。下にある装飾を隠さないために、色は不透過であってはなりません。","ホバーが表示されているワードの下を強調表示します。下にある装飾を隠さないために、色は不透過であってはなりません。","エディター ホバーの背景色。","エディター ホバーの境界線の色。","アクティブなリンクの色。","挿入されたテキストの境界線の色。下にある装飾を隠さないために、色は不透過であってはなりません。","削除されたテキストの境界線の色。下にある装飾を隠さないために、色は不透過であってはなりません。","挿入されたテキストの輪郭の色。","削除されたテキストの輪郭の色。","Border color between the two text editors.","検索一致項目を示す概要ルーラーのマーカー色。この色は下地の色に紛れないよう不明瞭であってはいけません。","選択範囲を強調表示するときの概要ルーラーのマーカー色。この色は下地の色に紛れないよう不明瞭であってはいけません。"] +}); +//# sourceMappingURL=../../../min-maps/vs/editor/editor.main.nls.ja.js.map \ No newline at end of file diff --git a/app/monaco-editor/min/vs/editor/editor.main.nls.js b/app/monaco-editor/min/vs/editor/editor.main.nls.js new file mode 100644 index 00000000..c42ac008 --- /dev/null +++ b/app/monaco-editor/min/vs/editor/editor.main.nls.js @@ -0,0 +1,29 @@ +/*!----------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.14.6(6c8f02b41db9ae5c4d15df767d47755e5c73b9d5) + * Released under the MIT license + * https://github.com/Microsoft/vscode/blob/master/LICENSE.txt + *-----------------------------------------------------------*/ +define("vs/editor/editor.main.nls",{"vs/base/browser/ui/actionbar/actionbar":["{0} ({1})"],"vs/base/browser/ui/aria/aria":["{0} (occurred again)","{0} (occurred {1} times)"],"vs/base/browser/ui/findinput/findInput":["input"],"vs/base/browser/ui/findinput/findInputCheckboxes":["Match Case","Match Whole Word","Use Regular Expression"],"vs/base/browser/ui/inputbox/inputBox":["Error: {0}","Warning: {0}","Info: {0}"],"vs/base/browser/ui/list/listWidget":["{0}. Use the navigation keys to navigate."],"vs/base/browser/ui/menu/menu":["{0} ({1})"],"vs/base/common/keybindingLabels":["Ctrl","Shift","Alt","Windows","Ctrl","Shift","Alt","Super","Control","Shift","Alt","Command","Control","Shift","Alt","Windows","Control","Shift","Alt","Super"],"vs/base/common/severity":["Error","Warning","Info"],"vs/base/parts/quickopen/browser/quickOpenModel":["{0}, picker","picker"],"vs/base/parts/quickopen/browser/quickOpenWidget":["Quick picker. Type to narrow down results.","Quick Picker","{0} Results"], +"vs/editor/browser/controller/coreCommands":["&&Select All","&&Undo","&&Redo"],"vs/editor/browser/widget/codeEditorWidget":["The number of cursors has been limited to {0}."],"vs/editor/browser/widget/diffEditorWidget":["Cannot compare files because one file is too large."],"vs/editor/browser/widget/diffReview":["Close","no lines","1 line","{0} lines","Difference {0} of {1}: original {2}, {3}, modified {4}, {5}","blank","original {0}, modified {1}: {2}","+ modified {0}: {1}","- original {0}: {1}","Go to Next Difference","Go to Previous Difference"], +"vs/editor/common/config/commonEditorConfig":["Editor","Controls the font family.","Controls the font weight.","Controls the font size in pixels.","Controls the line height. Use 0 to compute the line height from the font size.","Controls the letter spacing in pixels.","Line numbers are not rendered.","Line numbers are rendered as absolute number.","Line numbers are rendered as distance in lines to cursor position.","Line numbers are rendered every 10 lines.","Controls the display of line numbers.","Render vertical rulers after a certain number of monospace characters. Use multiple values for multiple rulers. No rulers are drawn if array is empty.","Characters that will be used as word separators when doing word related navigations or operations.","The number of spaces a tab is equal to. This setting is overridden based on the file contents when `#editor.detectIndentation#` is on.","Expected 'number'. Note that the value \"auto\" has been replaced by the `editor.detectIndentation` setting.","Insert spaces when pressing `Tab`. This setting is overridden based on the file contents when `#editor.detectIndentation#` is on.","Expected 'boolean'. Note that the value \"auto\" has been replaced by the `editor.detectIndentation` setting.","Controls whether `#editor.tabSize#` and `#editor.insertSpaces#` will be automatically detected when a file is opened based on the file contents.","Controls whether selections should have rounded corners.","Controls whether the editor will scroll beyond the last line.","Controls the number of extra characters beyond which the editor will scroll horizontally.","Controls whether the editor will scroll using an animation.","Controls whether the minimap is shown.","Controls the side where to render the minimap.","Controls whether the minimap slider is automatically hidden.","Render the actual characters on a line as opposed to color blocks.","Limit the width of the minimap to render at most a certain number of columns.","Controls whether the hover is shown.","Time delay in milliseconds after which to the hover is shown.","Controls whether the hover should remain visible when mouse is moved over it.","Controls whether the search string in the Find Widget is seeded from the editor selection.","Controls whether the find operation is carried on selected text or the entire file in the editor.","Controls whether the Find Widget should read or modify the shared find clipboard on macOS.","Lines will never wrap.","Lines will wrap at the viewport width.","Lines will wrap at `#editor.wordWrapColumn#`.","Lines will wrap at the minimum of viewport and `#editor.wordWrapColumn#`.","Controls how lines should wrap.","Controls the wrapping column of the editor when `#editor.wordWrap#` is `wordWrapColumn` or `bounded`.","No indentation. Wrapped lines begin at column 1.","Wrapped lines get the same indentation as the parent.","Wrapped lines get +1 indentation toward the parent.","Wrapped lines get +2 indentation toward the parent.","Controls the indentation of wrapped lines.","A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events.","Maps to `Control` on Windows and Linux and to `Command` on macOS.","Maps to `Alt` on Windows and Linux and to `Option` on macOS.","The modifier to be used to add multiple cursors with the mouse. The Go To Definition and Open Link mouse gestures will adapt such that they do not conflict with the multicursor modifier. [Read more](https://code.visualstudio.com/docs/editor/codebasics#_multicursor-modifier).","Merge multiple cursors when they are overlapping.","Enable quick suggestions inside strings.","Enable quick suggestions inside comments.","Enable quick suggestions outside of strings and comments.","Controls whether suggestions should automatically show up while typing.","Controls the delay in milliseconds after which quick suggestions will show up.","Enables a pop-up that shows parameter documentation and type information as you type.","Controls whether the editor should automatically close brackets after the user adds an opening bracket.","Controls whether the editor should automatically format the line after typing.","Controls whether the editor should automatically format the pasted content. A formatter must be available and the formatter should be able to format a range in a document.","Controls whether the editor should automatically adjust the indentation when users type, paste or move lines. Extensions with indentation rules of the language must be available.","Controls whether suggestions should automatically show up when typing trigger characters.","Only accept a suggestion with `Enter` when it makes a textual change.","Controls whether suggestions should be accepted on `Enter`, in addition to `Tab`. Helps to avoid ambiguity between inserting new lines or accepting suggestions.","Controls whether suggestions should be accepted on commit characters. For example, in JavaScript, the semi-colon (`;`) can be a commit character that accepts a suggestion and types that character.","Show snippet suggestions on top of other suggestions.","Show snippet suggestions below other suggestions.","Show snippets suggestions with other suggestions.","Do not show snippet suggestions.","Controls whether snippets are shown with other suggestions and how they are sorted.","Controls whether copying without a selection copies the current line.","Controls whether completions should be computed based on words in the document.","Always select the first suggestion.","Select recent suggestions unless further typing selects one, e.g. `console.| -> console.log` because `log` has been completed recently.","Select suggestions based on previous prefixes that have completed those suggestions, e.g. `co -> console` and `con -> const`.","Controls how suggestions are pre-selected when showing the suggest list.","Font size for the suggest widget.","Line height for the suggest widget.","Controls whether filtering and sorting suggestions accounts for small typos.","Control whether an active snippet prevents quick suggestions.","Controls whether the editor should highlight matches similar to the selection","Controls whether the editor should highlight semantic symbol occurrences.","Controls the number of decorations that can show up at the same position in the overview ruler.","Controls whether a border should be drawn around the overview ruler.","Control the cursor animation style.","Zoom the font of the editor when using mouse wheel and holding `Ctrl`.","Controls the cursor style.","Controls the width of the cursor when `#editor.cursorStyle#` is set to `line`.","Enables/Disables font ligatures.","Controls whether the cursor should be hidden in the overview ruler.","Render whitespace characters except for single spaces between words.","Controls how the editor should render whitespace characters.","Controls whether the editor should render control characters.","Controls whether the editor should render indent guides.","Controls whether the editor should highlight the active indent guide.","Highlights both the gutter and the current line.","Controls how the editor should render the current line highlight.","Controls whether the editor shows CodeLens","Controls whether the editor has code folding enabled","Controls the strategy for computing folding ranges. `auto` uses a language specific folding strategy, if available. `indentation` uses the indentation based folding strategy.","Controls whether the fold controls on the gutter are automatically hidden.","Highlight matching brackets when one of them is selected.","Controls whether the editor should render the vertical glyph margin. Glyph margin is mostly used for debugging.","Inserting and deleting whitespace follows tab stops.","Remove trailing auto inserted whitespace.","Keep peek editors open even when double clicking their content or when hitting `Escape`.","Controls whether the editor should allow moving selections via drag and drop.","The editor will use platform APIs to detect when a Screen Reader is attached.","The editor will be permanently optimized for usage with a Screen Reader.","The editor will never be optimized for usage with a Screen Reader.","Controls whether the editor should run in a mode where it is optimized for screen readers.","Controls fading out of unused code.","Controls whether the editor should detect links and make them clickable.","Controls whether the editor should render the inline color decorators and color picker.","Enables the code action lightbulb in the editor.","Controls whether organize imports action should be run on file save.","Code action kinds to be run on save.","Timeout in milliseconds after which the code actions that are run on save are cancelled.","Controls whether the Linux primary clipboard should be supported.","Controls whether the diff editor shows the diff side by side or inline.","Controls whether the diff editor shows changes in leading or trailing whitespace as diffs.","Special handling for large files to disable certain memory intensive features.","Controls whether the diff editor shows +/- indicators for added/removed changes."], +"vs/editor/common/config/editorOptions":["The editor is not accessible at this time. Press Alt+F1 for options.","Editor content"],"vs/editor/common/controller/cursor":["Unexpected exception while executing command."],"vs/editor/common/modes/modesRegistry":["Plain Text"],"vs/editor/common/services/modelServiceImpl":["[{0}]\n{1}","[{0}] {1}"], +"vs/editor/common/view/editorColorRegistry":["Background color for the highlight of line at the cursor position.","Background color for the border around the line at the cursor position.","Background color of highlighted ranges, like by quick open and find features. The color must not be opaque to not hide underlying decorations.","Background color of the border around highlighted ranges.","Color of the editor cursor.","The background color of the editor cursor. Allows customizing the color of a character overlapped by a block cursor.","Color of whitespace characters in the editor.","Color of the editor indentation guides.","Color of the active editor indentation guides.","Color of editor line numbers.","Color of editor active line number","Id is deprecated. Use 'editorLineNumber.activeForeground' instead.","Color of editor active line number","Color of the editor rulers.","Foreground color of editor code lenses","Background color behind matching brackets","Color for matching brackets boxes","Color of the overview ruler border.","Background color of the editor gutter. The gutter contains the glyph margins and the line numbers.","Foreground color of error squigglies in the editor.","Border color of error squigglies in the editor.","Foreground color of warning squigglies in the editor.","Border color of warning squigglies in the editor.","Foreground color of info squigglies in the editor.","Border color of info squigglies in the editor.","Foreground color of hint squigglies in the editor.","Border color of hint squigglies in the editor.","Border of unnecessary code in the editor.","Opacity of unnecessary code in the editor.","Overview ruler marker color for errors.","Overview ruler marker color for warnings.","Overview ruler marker color for infos."], +"vs/editor/contrib/bracketMatching/bracketMatching":["Overview ruler marker color for matching brackets.","Go to Bracket","Select to Bracket"],"vs/editor/contrib/caretOperations/caretOperations":["Move Caret Left","Move Caret Right"],"vs/editor/contrib/caretOperations/transpose":["Transpose Letters"],"vs/editor/contrib/clipboard/clipboard":["Cut","Cu&&t","Copy","&&Copy","Paste","&&Paste","Copy With Syntax Highlighting"],"vs/editor/contrib/codeAction/codeActionCommands":["Show Fixes ({0})","Show Fixes","Quick Fix...","No code actions available","No code actions available","Refactor...","No refactorings available","Source Action...","No source actions available","Organize Imports","No organize imports action available"],"vs/editor/contrib/comment/comment":["Toggle Line Comment","&&Toggle Line Comment","Add Line Comment","Remove Line Comment","Toggle Block Comment","Toggle &&Block Comment"],"vs/editor/contrib/contextmenu/contextmenu":["Show Editor Context Menu"], +"vs/editor/contrib/cursorUndo/cursorUndo":["Soft Undo"],"vs/editor/contrib/find/findController":["Find","&&Find","Find With Selection","Find Next","Find Previous","Find Next Selection","Find Previous Selection","Replace","&&Replace"],"vs/editor/contrib/find/findWidget":["Find","Find","Previous match","Next match","Find in selection","Close","Replace","Replace","Replace","Replace All","Toggle Replace mode","Only the first {0} results are highlighted, but all find operations work on the entire text.","{0} of {1}","No Results"],"vs/editor/contrib/folding/folding":["Unfold","Unfold Recursively","Fold","Fold Recursively","Fold All Block Comments","Fold All Regions","Unfold All Regions","Fold All","Unfold All","Fold Level {0}"],"vs/editor/contrib/fontZoom/fontZoom":["Editor Font Zoom In","Editor Font Zoom Out","Editor Font Zoom Reset"], +"vs/editor/contrib/format/formatActions":["Made 1 formatting edit on line {0}","Made {0} formatting edits on line {1}","Made 1 formatting edit between lines {0} and {1}","Made {0} formatting edits between lines {1} and {2}","There is no formatter for '{0}'-files installed.","Format Document","There is no document formatter for '{0}'-files installed.","Format Selection","There is no selection formatter for '{0}'-files installed."],"vs/editor/contrib/goToDefinition/goToDefinitionCommands":["No definition found for '{0}'","No definition found"," – {0} definitions","Go to Definition","Open Definition to the Side","Peek Definition","No implementation found for '{0}'","No implementation found"," – {0} implementations","Go to Implementation","Peek Implementation","No type definition found for '{0}'","No type definition found"," – {0} type definitions","Go to Type Definition","Peek Type Definition"],"vs/editor/contrib/goToDefinition/goToDefinitionMouse":["Click to show {0} definitions."], +"vs/editor/contrib/gotoError/gotoError":["Go to Next Problem (Error, Warning, Info)","Go to Previous Problem (Error, Warning, Info)","Go to Next Problem in Files (Error, Warning, Info)","Go to Previous Problem in Files (Error, Warning, Info)"],"vs/editor/contrib/gotoError/gotoErrorWidget":["({0}/{1})","Editor marker navigation widget error color.","Editor marker navigation widget warning color.","Editor marker navigation widget info color.","Editor marker navigation widget background."],"vs/editor/contrib/hover/hover":["Show Hover"],"vs/editor/contrib/hover/modesContentHover":["Loading..."],"vs/editor/contrib/inPlaceReplace/inPlaceReplace":["Replace with Previous Value","Replace with Next Value"], +"vs/editor/contrib/linesOperations/linesOperations":["Copy Line Up","&&Copy Line Up","Copy Line Down","Co&&py Line Down","Move Line Up","Mo&&ve Line Up","Move Line Down","Move &&Line Down","Sort Lines Ascending","Sort Lines Descending","Trim Trailing Whitespace","Delete Line","Indent Line","Outdent Line","Insert Line Above","Insert Line Below","Delete All Left","Delete All Right","Join Lines","Transpose characters around the cursor","Transform to Uppercase","Transform to Lowercase"],"vs/editor/contrib/links/links":["Cmd + click to follow link","Ctrl + click to follow link","Cmd + click to execute command","Ctrl + click to execute command","Option + click to follow link","Alt + click to follow link","Option + click to execute command","Alt + click to execute command","Failed to open this link because it is not well-formed: {0}","Failed to open this link because its target is missing.","Open Link"],"vs/editor/contrib/message/messageController":["Cannot edit in read-only editor"], +"vs/editor/contrib/multicursor/multicursor":["Add Cursor Above","&&Add Cursor Above","Add Cursor Below","A&&dd Cursor Below","Add Cursors to Line Ends","Add C&&ursors to Line Ends","Add Selection To Next Find Match","Add &&Next Occurrence","Add Selection To Previous Find Match","Add P&&revious Occurrence","Move Last Selection To Next Find Match","Move Last Selection To Previous Find Match","Select All Occurrences of Find Match","Select All &&Occurrences","Change All Occurrences"],"vs/editor/contrib/parameterHints/parameterHints":["Trigger Parameter Hints"],"vs/editor/contrib/parameterHints/parameterHintsWidget":["{0}, hint"],"vs/editor/contrib/referenceSearch/peekViewWidget":["Close"],"vs/editor/contrib/referenceSearch/referenceSearch":[" – {0} references","Find All References"],"vs/editor/contrib/referenceSearch/referencesController":["Loading..."], +"vs/editor/contrib/referenceSearch/referencesModel":["symbol in {0} on line {1} at column {2}","1 symbol in {0}, full path {1}","{0} symbols in {1}, full path {2}","No results found","Found 1 symbol in {0}","Found {0} symbols in {1}","Found {0} symbols in {1} files"], +"vs/editor/contrib/referenceSearch/referencesWidget":["Failed to resolve file.","{0} references","{0} reference","no preview available","References","No results","References","Background color of the peek view title area.","Color of the peek view title.","Color of the peek view title info.","Color of the peek view borders and arrow.","Background color of the peek view result list.","Foreground color for line nodes in the peek view result list.","Foreground color for file nodes in the peek view result list.","Background color of the selected entry in the peek view result list.","Foreground color of the selected entry in the peek view result list.","Background color of the peek view editor.","Background color of the gutter in the peek view editor.","Match highlight color in the peek view result list.","Match highlight color in the peek view editor.","Match highlight border in the peek view editor."], +"vs/editor/contrib/rename/rename":["No result.","Successfully renamed '{0}' to '{1}'. Summary: {2}","Rename failed to execute.","Rename Symbol"],"vs/editor/contrib/rename/renameInputField":["Rename input. Type new name and press Enter to commit."],"vs/editor/contrib/smartSelect/smartSelect":["Expand Select","&&Expand Selection","Shrink Select","&&Shrink Selection"],"vs/editor/contrib/snippet/snippetVariables":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sun","Mon","Tue","Wed","Thu","Fri","Sat","January","February","March","April","May","June","July","August","September","October","November","December","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"vs/editor/contrib/suggest/suggestController":["Accepting '{0}' did insert the following text: {1}","Trigger Suggest"], +"vs/editor/contrib/suggest/suggestWidget":["Background color of the suggest widget.","Border color of the suggest widget.","Foreground color of the suggest widget.","Background color of the selected entry in the suggest widget.","Color of the match highlights in the suggest widget.","Read More...{0}","{0}, suggestion, has details","{0}, suggestion","Read less...{0}","Loading...","No suggestions.","{0}, accepted","{0}, suggestion, has details","{0}, suggestion"],"vs/editor/contrib/toggleTabFocusMode/toggleTabFocusMode":["Toggle Tab Key Moves Focus"], +"vs/editor/contrib/wordHighlighter/wordHighlighter":["Background color of a symbol during read-access, like reading a variable. The color must not be opaque to not hide underlying decorations.","Background color of a symbol during write-access, like writing to a variable. The color must not be opaque to not hide underlying decorations.","Border color of a symbol during read-access, like reading a variable.","Border color of a symbol during write-access, like writing to a variable.","Overview ruler marker color for symbol highlights. The color must not be opaque to not hide underlying decorations.","Overview ruler marker color for write-access symbol highlights. The color must not be opaque to not hide underlying decorations.","Go to Next Symbol Highlight","Go to Previous Symbol Highlight"], +"vs/editor/standalone/browser/accessibilityHelp/accessibilityHelp":["No selection","Line {0}, Column {1} ({2} selected)","Line {0}, Column {1}","{0} selections ({1} characters selected)","{0} selections","Now changing the setting `accessibilitySupport` to 'on'.","Now opening the Editor Accessibility documentation page."," in a read-only pane of a diff editor."," in a pane of a diff editor."," in a read-only code editor"," in a code editor","To configure the editor to be optimized for usage with a Screen Reader press Command+E now.","To configure the editor to be optimized for usage with a Screen Reader press Control+E now.","The editor is configured to be optimized for usage with a Screen Reader.","The editor is configured to never be optimized for usage with a Screen Reader, which is not the case at this time.","Pressing Tab in the current editor will move focus to the next focusable element. Toggle this behavior by pressing {0}.","Pressing Tab in the current editor will move focus to the next focusable element. The command {0} is currently not triggerable by a keybinding.","Pressing Tab in the current editor will insert the tab character. Toggle this behavior by pressing {0}.","Pressing Tab in the current editor will insert the tab character. The command {0} is currently not triggerable by a keybinding.","Press Command+H now to open a browser window with more information related to editor accessibility.","Press Control+H now to open a browser window with more information related to editor accessibility.","You can dismiss this tooltip and return to the editor by pressing Escape or Shift+Escape.","Show Accessibility Help"], +"vs/editor/standalone/browser/inspectTokens/inspectTokens":["Developer: Inspect Tokens"],"vs/editor/standalone/browser/quickOpen/gotoLine":["Go to line {0} and character {1}","Go to line {0}","Type a line number between 1 and {0} to navigate to","Type a character between 1 and {0} to navigate to","Go to line {0}","Type a line number, followed by an optional colon and a character number to navigate to","Go to Line..."],"vs/editor/standalone/browser/quickOpen/quickCommand":["{0}, commands","Type the name of an action you want to execute","Command Palette"],"vs/editor/standalone/browser/quickOpen/quickOutline":["{0}, symbols","Type the name of an identifier you wish to navigate to","Go to Symbol...","symbols ({0})","modules ({0})","classes ({0})","interfaces ({0})","methods ({0})","functions ({0})","properties ({0})","variables ({0})","variables ({0})","constructors ({0})","calls ({0})"],"vs/editor/standalone/browser/simpleServices":["Made {0} edits in {1} files"], +"vs/editor/standalone/browser/standaloneCodeEditor":["Editor content","Press Ctrl+F1 for Accessibility Options.","Press Alt+F1 for Accessibility Options."],"vs/editor/standalone/browser/toggleHighContrast/toggleHighContrast":["Toggle High Contrast Theme"],"vs/platform/configuration/common/configurationRegistry":["Default Configuration Overrides","Configure editor settings to be overridden for {0} language.","Configure editor settings to be overridden for a language.","Cannot register '{0}'. This matches property pattern '\\\\[.*\\\\]$' for describing language specific editor settings. Use 'configurationDefaults' contribution.","Cannot register '{0}'. This property is already registered."],"vs/platform/keybinding/common/abstractKeybindingService":["({0}) was pressed. Waiting for second key of chord...","The key combination ({0}, {1}) is not a command."], +"vs/platform/list/browser/listService":["Workbench","Maps to `Control` on Windows and Linux and to `Command` on macOS.","Maps to `Alt` on Windows and Linux and to `Option` on macOS.","The modifier to be used to add an item in trees and lists to a multi-selection with the mouse (for example in the explorer, open editors and scm view). The 'Open to Side' mouse gestures - if supported - will adapt such that they do not conflict with the multiselect modifier.","Controls how to open items in trees and lists using the mouse (if supported). For parents with children in trees, this setting will control if a single click expands the parent or a double click. Note that some trees and lists might choose to ignore this setting if it is not applicable. ","Controls whether trees support horizontal scrolling in the workbench."],"vs/platform/markers/common/markers":["Error","Warning","Info"], +"vs/platform/theme/common/colorRegistry":["Colors used in the workbench.","Overall foreground color. This color is only used if not overridden by a component.","Overall foreground color for error messages. This color is only used if not overridden by a component.","Overall border color for focused elements. This color is only used if not overridden by a component.","An extra border around elements to separate them from others for greater contrast.","An extra border around active elements to separate them from others for greater contrast.","Foreground color for links in text.","Background color for code blocks in text.","Shadow color of widgets such as find/replace inside the editor.","Input box background.","Input box foreground.","Input box border.","Border color of activated options in input fields.","Input validation background color for information severity.","Input validation border color for information severity.","Input validation background color for warning severity.","Input validation border color for warning severity.","Input validation background color for error severity.","Input validation border color for error severity.","List/Tree background color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.","List/Tree foreground color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.","List/Tree background color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.","List/Tree foreground color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.","List/Tree background color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.","List/Tree foreground color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.","List/Tree background color for the focused item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.","List/Tree background when hovering over items using the mouse.","List/Tree foreground when hovering over items using the mouse.","List/Tree drag and drop background when moving items around using the mouse.","List/Tree foreground color of the match highlights when searching inside the list/tree.","Quick picker color for grouping labels.","Quick picker color for grouping borders.","Badge background color. Badges are small information labels, e.g. for search results count.","Badge foreground color. Badges are small information labels, e.g. for search results count.","Scrollbar shadow to indicate that the view is scrolled.","Scrollbar slider background color.","Scrollbar slider background color when hovering.","Scrollbar slider background color when clicked on.","Background color of the progress bar that can show for long running operations.","Editor background color.","Editor default foreground color.","Background color of editor widgets, such as find/replace.","Border color of editor widgets. The color is only used if the widget chooses to have a border and if the color is not overridden by a widget.","Border color of the resize bar of editor widgets. The color is only used if the widget chooses to have a resize border and if the color is not overridden by a widget.","Color of the editor selection.","Color of the selected text for high contrast.","Color of the selection in an inactive editor. The color must not be opaque to not hide underlying decorations.","Color for regions with the same content as the selection. The color must not be opaque to not hide underlying decorations.","Border color for regions with the same content as the selection.","Color of the current search match.","Color of the other search matches. The color must not be opaque to not hide underlying decorations.","Color of the range limiting the search. The color must not be opaque to not hide underlying decorations.","Border color of the current search match.","Border color of the other search matches.","Border color of the range limiting the search. The color must not be opaque to not hide underlying decorations.","Highlight below the word for which a hover is shown. The color must not be opaque to not hide underlying decorations.","Background color of the editor hover.","Border color of the editor hover.","Color of active links.","Background color for text that got inserted. The color must not be opaque to not hide underlying decorations.","Background color for text that got removed. The color must not be opaque to not hide underlying decorations.","Outline color for the text that got inserted.","Outline color for text that got removed.","Border color between the two text editors.","Overview ruler marker color for find matches. The color must not be opaque to not hide underlying decorations.","Overview ruler marker color for selection highlights. The color must not be opaque to not hide underlying decorations."] +}); +//# sourceMappingURL=../../../min-maps/vs/editor/editor.main.nls.js.map \ No newline at end of file diff --git a/app/monaco-editor/min/vs/editor/editor.main.nls.ko.js b/app/monaco-editor/min/vs/editor/editor.main.nls.ko.js new file mode 100644 index 00000000..12afb80f --- /dev/null +++ b/app/monaco-editor/min/vs/editor/editor.main.nls.ko.js @@ -0,0 +1,26 @@ +/*!----------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.14.6(6c8f02b41db9ae5c4d15df767d47755e5c73b9d5) + * Released under the MIT license + * https://github.com/Microsoft/vscode/blob/master/LICENSE.txt + *-----------------------------------------------------------*/ +define("vs/editor/editor.main.nls.ko",{"vs/base/browser/ui/actionbar/actionbar":["{0}({1})"],"vs/base/browser/ui/aria/aria":["{0}(다시 발생함)","{0} (occurred {1} times)"],"vs/base/browser/ui/findinput/findInput":["입력"],"vs/base/browser/ui/findinput/findInputCheckboxes":["대/소문자 구분","단어 단위로","정규식 사용"],"vs/base/browser/ui/inputbox/inputBox":["오류: {0}","경고: {0}","정보: {0}"],"vs/base/browser/ui/list/listWidget":["{0}. Use the navigation keys to navigate."],"vs/base/browser/ui/menu/menu":["{0} ({1})"],"vs/base/common/keybindingLabels":["Ctrl","","Alt","Windows","Ctrl","","Alt","Super","컨트롤","","Alt","명령","컨트롤","","Alt","Windows","컨트롤","","Alt","Super"],"vs/base/common/severity":["오류","경고","정보"],"vs/base/parts/quickopen/browser/quickOpenModel":["{0}, 선택기","선택기"],"vs/base/parts/quickopen/browser/quickOpenWidget":["빠른 선택기입니다. 결과의 범위를 축소하려면 입력합니다.","빠른 선택기","{0} Results"],"vs/editor/browser/controller/coreCommands":["&&Select All","&&Undo","&&Redo"], +"vs/editor/browser/widget/codeEditorWidget":["커서 수는 {0}(으)로 제한되었습니다."],"vs/editor/browser/widget/diffEditorWidget":["파일 1개가 너무 커서 파일을 비교할 수 없습니다."],"vs/editor/browser/widget/diffReview":["닫기","줄 없음","1줄","{0}줄","차이 {0}/{1}개: 원본 {2}, {3}, 수정 {4}, {5}","비어 있음","원본 {0}, 수정 {1}: {2}","+ 수정됨 {0}: {1}","- 원본 {0}: {1}","다음 다른 항목으로 이동","다음 다른 항목으로 이동"], +"vs/editor/common/config/commonEditorConfig":["편집기","글꼴 패밀리를 제어합니다.","글꼴 두께를 제어합니다.","글꼴 크기(픽셀)를 제어합니다.","줄 높이를 제어합니다. fontSize의 lineHeight를 계산하려면 0을 사용합니다.","글자 간격을 픽셀 단위로 조정합니다.","줄 번호는 렌더링 되지 않습니다.","줄 번호는 절대값으로 렌더링 됩니다.","줄 번호는 커서 위치에서 줄 간격 거리로 렌더링 됩니다.","줄 번호는 매 10 줄마다 렌더링이 이루어집니다.","줄 번호의 표시 여부를 제어합니다.","특정 수의 고정 폭 문자 뒤에 세로 눈금자를 렌더링합니다. 여러 눈금자의 경우 여러 값을 사용합니다. 배열이 비어 있는 경우 눈금자가 그려져 있지 않습니다.","단어 관련 탐색 또는 작업을 수행할 때 단어 구분 기호로 사용되는 문자입니다.","탭 한 개에 해당하는 공백 수입니다. `editor.detectIndentation`이 켜져 있는 경우 이 설정은 파일 콘텐츠에 따라 재정의됩니다.","'number'가 필요합니다. 값 \"auto\"는 `editor.detectIndentation` 설정에 의해 바뀌었습니다.","탭 키를 누를 때 공백을 삽입합니다. `editor.detectIndentation`이 켜져 있는 경우 이 설정은 파일 콘텐츠에 따라 재정의됩니다.","'boolean'이 필요합니다. 값 \"auto\"는 `editor.detectIndentation` 설정에 의해 바뀌었습니다.","파일을 열면 파일 콘텐츠를 기반으로 하여 'editor.tabSize'와 'editor.insertSpaces'가 검색됩니다.","선택 항목의 모서리를 둥글게 할지 여부를 제어합니다.","편집기에서 마지막 줄 이후로 스크롤할지 여부를 제어합니다.","편집기에서 가로로 스크롤되는 범위를 벗어나는 추가 문자의 수를 제어합니다.","편집기에서 애니메이션을 사용하여 스크롤할지 여부를 제어합니다.","미니맵 표시 여부를 제어합니다.","미니맵을 렌더링할 측면을 제어합니다.","미니맵 슬라이더를 자동으로 숨길지 결정합니다.","줄의 실제 문자(색 블록 아님) 렌더링","최대 특정 수의 열을 렌더링하도록 미니맵의 너비를 제한합니다.","Controls whether the hover is shown.","Time delay in milliseconds after which to the hover is shown.","Controls whether the hover should remain visible when mouse is moved over it.","편집기 선택에서 Find Widget의 검색 문자열을 시딩할지 설정합니다.","편집기에서 여러 글자 또는 행을 선택했을 때 Find in Selection 플래그를 켤지 설정합니다.","macOS에서 Find Widget이 공유 클립보드 찾기를 읽거나 수정해야 할지 설정합니다.","줄이 바뀌지 않습니다.","뷰포트 너비에서 줄이 바뀝니다.","`editor.wordWrapColumn`에서 줄이 바뀝니다.","뷰포트의 최소값 및 `editor.wordWrapColumn`에서 줄이 바뀝니다.","줄 바꿈 여부를 제어합니다. 다음 중 하나일 수 있습니다.\n - 'off' (줄 바꿈 사용 안 함),\n - 'on' (뷰포트 줄 바꿈),\n - 'wordWrapColumn' (`editor.wordWrapColumn`에서 줄 바꿈) 또는\n - 'bounded' (뷰포트의 최소값 및 `editor.wordWrapColumn`에서 줄 바꿈).","`editor.wordWrap`이 'wordWrapColumn' 또는 'bounded'인 경우 편집기의 열 줄 바꿈을 제어합니다.","No indentation. Wrapped lines begin at column 1.","Wrapped lines get the same indentation as the parent.","Wrapped lines get +1 indentation toward the parent.","Wrapped lines get +2 indentation toward the parent.","줄 바꿈 행의 들여쓰기를 제어합니다. 'none', 'same', 'indent' 또는 'deepIndent' 중 하나일 수 있습니다.","마우스 휠 스크롤 이벤트의 `deltaX` 및 `deltaY`에서 사용할 승수","Windows와 Linux의 'Control'을 macOS의 'Command'로 매핑합니다.","Windows와 Linux의 'Alt'를 macOS의 'Option'으로 매핑합니다.","마우스로 여러 커서를 추가할 때 사용할 수정자입니다. `ctrlCmd`는 Windows와 Linux에서 `Control`로 매핑되고 macOS에서 `Command`로 매핑됩니다. Go To Definition 및 Open Link 마우스 제스처가 멀티커서 수정자와 충돌하지 않도록 조정됩니다.","여러 커서가 겹치는 경우 커서를 병합합니다.","문자열 내에서 빠른 제안을 사용합니다.","주석 내에서 빠른 제안을 사용합니다.","문자열 및 주석 외부에서 빠른 제안을 사용합니다.","입력하는 동안 제안을 자동으로 표시할지 여부를 제어합니다.","빠른 제안을 표시할 지연 시간(ms)을 제어합니다.","입력과 동시에 매개변수 문서와 유형 정보를 표시하는 팝업을 사용","괄호를 연 다음에 편집기에서 괄호를 자동으로 닫을지 여부를 제어합니다.","입력 후 편집기에서 자동으로 줄의 서식을 지정할지 여부를 제어합니다.","붙여넣은 콘텐츠의 서식을 편집기에서 자동으로 지정할지 여부를 제어합니다. 포맷터는 반드시 사용할 수 있어야 하며 문서에서 범위의 서식을 지정할 수 있어야 합니다.","사용자가 입력하고 라인을 붙여넣거나 이동할 때 편집기가 자동으로 들여쓰기를 적용할지 결정합니다. 해당 언어의 들여쓰기 규칙을 사용할 수 있어야 합니다.","트리거 문자를 입력할 때 제안을 자동으로 표시할지 여부를 제어합니다.","Only accept a suggestion with `Enter` when it makes a textual change.","'Tab' 키 외에 'Enter' 키에 대한 제안도 허용할지를 제어합니다. 새 줄을 삽입하는 동작과 제안을 허용하는 동작 간의 모호함을 없앨 수 있습니다.","커밋 문자에 대한 제안을 허용할지를 제어합니다. 예를 들어 JavaScript에서는 세미콜론(';')이 제안을 허용하고 해당 문자를 입력하는 커밋 문자일 수 있습니다.","다른 제안 위에 조각 제안을 표시합니다.","다른 제안 아래에 조각 제안을 표시합니다.","다른 제안과 함께 조각 제안을 표시합니다.","코드 조각 제안을 표시하지 않습니다.\n","코드 조각이 다른 추천과 함께 표시되는지 여부 및 정렬 방법을 제어합니다.","선택 영역 없이 현재 줄 복사 여부를 제어합니다.","문서 내 단어를 기반으로 완성을 계산할지 여부를 제어합니다.","항상 첫 번째 제안을 선택합니다.","추가로 입력되지 않는 경우, 최근 제안을 선택합니다. 예를 들어 'log'가 최근에 완료되었으므로 'console.| -> console.log'로 전개되는 것을 선택합니다.","제안을 완료한 이전 접두사를 기준으로 제안을 선택합니다. 예를 들어 'co-> console'로, 'con->const'로 전개됩니다.","제안 목록을 표시할 때 제한이 미리 선택되는 방식을 제어합니다.","제안 위젯의 글꼴 크기","제안 위젯의 줄 높이","Controls whether filtering and sorting suggestions accounts for small typos.","Control whether an active snippet prevents quick suggestions.","편집기에서 선택 항목과 유사한 일치 항목을 강조 표시할지 여부를 제어합니다.","편집기에서 의미 체계 기호 항목을 강조 표시할지 여부를 제어합니다.","개요 눈금자에서 동일한 위치에 표시될 수 있는 장식 수를 제어합니다.","개요 눈금자 주위에 테두리를 그릴지 여부를 제어합니다.","커서 애니메이션 스타일을 제어합니다.","마우스 휠을 사용할 때 Ctrl 키를 누르고 있으면 편집기의 글꼴 확대/축소","커서 스타일을 제어합니다. 허용되는 값은 '블록', '블록-윤곽', '줄', '줄-가늘게', '밑줄' 및 '밑줄-가늘게'입니다.","editor.cursorStyle 설정이 'line'으로 설정되어 있을 때 커서의 넓이를 조절합니다.","글꼴 합자 사용","커서가 개요 눈금자에서 가려져야 하는지 여부를 제어합니다.","Render whitespace characters except for single spaces between words.","편집기에서 공백 문자를 렌더링하는 방법을 제어합니다. 가능한 값은 'none', 'boundary' 및 'all'입니다. 'boundary' 옵션은 단어 사이의 한 칸 공백을 렌더링하지 않습니다.","편집기에서 제어 문자를 렌더링할지를 제어합니다.","편집기에서 들여쓰기 가이드를 렌더링할지를 제어합니다.","Controls whether the editor should highlight the active indent guide.","Highlights both the gutter and the current line.","편집기가 현재 줄 강조 표시를 렌더링하는 방식을 제어합니다. 가능한 값은 'none', 'gutter', 'line' 및 'all'입니다.","편집기에서 CodeLens를 표시하는지 여부를 제어합니다.","편집기에서 코드 접기를 사용할지 여부를 제어합니다.","접기 범위를 계산하는 방식을 제어합니다. '자동' 선택이면 사용 가능한 경우 언어 관련 접기 전략을 사용합니다. '들여쓰기'이면 들여쓰기 기반 접기 전략이 사용됩니다.","거터의 폴드 컨트롤을 자동으로 숨길지 결정합니다.","대괄호 중 하나를 선택할 때 일치하는 대괄호를 강조 표시합니다.","편집기에서 세로 문자 모양 여백을 렌더링할지 여부를 제어합니다. 문자 모양 여백은 주로 디버깅에 사용됩니다.","탭 정지 뒤에 공백 삽입 및 삭제","끝에 자동 삽입된 공백 제거","해당 콘텐츠를 두 번 클릭하거나 키를 누르더라도 Peek 편집기를 열린 상태로 유지합니다.","편집기에서 끌어서 놓기로 선택 영역을 이동할 수 있는지 여부를 제어합니다.","편집기가 스크린 리더가 연결되면 플랫폼 API를 사용하여 감지합니다.","편집기가 스크린 리더 사용을 위해 영구적으로 최적화됩니다.","편집기가 스크린 리더 사용을 위해 최적화되지 않습니다.","편집기를 스크린 리더를 위해 최적화된 모드로 실행할지 결정합니다.","Controls fading out of unused code.","편집기에서 링크를 감지하고 클릭할 수 있게 만들지 결정합니다.","편집기에서 인라인 색 데코레이터 및 색 선택을 렌더링할지를 제어합니다.","코드 동작 전구를 사용합니다.","저장할 때 가져오기 구성을 실행하시겠습니까?","저장할 때 실행되는 코드 동작 종류입니다.","저장할 때 실행되는 코드 동작에 대한 시간 제한입니다.","Linux 주 클립보드의 지원 여부를 제어합니다.","diff 편집기에서 diff를 나란히 표시할지 인라인으로 표시할지 여부를 제어합니다.","diff 편집기에서 선행 공백 또는 후행 공백 변경을 diffs로 표시할지 여부를 제어합니다.","큰 파일에 대한 특수 처리로, 메모리를 많이 사용하는 특정 기능을 사용하지 않도록 설정합니다.","diff 편집기에서 추가/제거된 변경 내용에 대해 +/- 표시기를 표시하는지 여부를 제어합니다."], +"vs/editor/common/config/editorOptions":["지금은 편집기를 사용할 수 없습니다. Alt+F1을 눌러 옵션을 보세요.","편집기 콘텐츠"],"vs/editor/common/controller/cursor":["명령을 실행하는 동안 예기치 않은 예외가 발생했습니다."],"vs/editor/common/modes/modesRegistry":["일반 텍스트"],"vs/editor/common/services/modelServiceImpl":["[{0}]\n{1}","[{0}] {1}"], +"vs/editor/common/view/editorColorRegistry":["커서 위치의 줄 강조 표시에 대한 배경색입니다.","커서 위치의 줄 테두리에 대한 배경색입니다.","빠른 열기 및 찾기 기능 등을 통해 강조 표시된 영역의 배경색입니다. 색은 밑에 깔린 꾸밈을 가리지 않도록 반드시 불투명이 아니어야 합니다.","강조 영역 주변의 테두리에 대한 배경색입니다","편집기 커서 색입니다.","편집기 커서의 배경색입니다. 블록 커서와 겹치는 글자의 색상을 사용자 정의할 수 있습니다.","편집기의 공백 문자 색입니다.","편집기 들여쓰기 안내선 색입니다.","활성 편집기 들여쓰기 안내선 색입니다.","편집기 줄 번호 색입니다.","편집기 활성 영역 줄번호 색상","ID는 사용되지 않습니다. 대신 'editorLineNumber.activeForeground'를 사용하세요.","편집기 활성 영역 줄번호 색상","편집기 눈금의 색상입니다.","편집기 코드 렌즈의 전경색입니다.","일치하는 괄호 뒤의 배경색","일치하는 브래킷 박스의 색상","개요 눈금 경계의 색상입니다.","편집기 거터의 배경색입니다. 거터에는 글리프 여백과 행 수가 있습니다.","편집기 내 오류 표시선의 전경색입니다.","편집기 내 오류 표시선의 테두리 색입니다.","편집기 내 경고 표시선의 전경색입니다.","편집기 내 경고 표시선의 테두리 색입니다.","편집기 내 정보 표시선의 전경색입니다.","편집기 내 정보 표시선의 테두리 색입니다.","편집기에서 힌트 표시선의 전경색입니다.","편집기에서 힌트 표시선의 테두리 색입니다.","Border of unnecessary code in the editor.","Opacity of unnecessary code in the editor.","오류의 개요 눈금자 마커 색입니다.","경고의 개요 눈금자 마커 색입니다.","정보의 개요 눈금자 마커 색입니다."], +"vs/editor/contrib/bracketMatching/bracketMatching":["괄호에 해당하는 영역을 표시자에 채색하여 표시합니다.","대괄호로 이동","괄호까지 선택"],"vs/editor/contrib/caretOperations/caretOperations":["캐럿을 왼쪽으로 이동","캐럿을 오른쪽으로 이동"],"vs/editor/contrib/caretOperations/transpose":["문자 바꾸기"],"vs/editor/contrib/clipboard/clipboard":["잘라내기","Cu&&t","복사","&&Copy","붙여넣기","&&Paste","구문을 강조 표시하여 복사"],"vs/editor/contrib/codeAction/codeActionCommands":["수정 사항 표시({0})","수정 사항 표시","빠른 수정...","사용 가능한 코드 동작이 없습니다.","사용 가능한 코드 동작이 없습니다.","리팩터링...","사용 가능한 리펙터링이 없습니다.","소스 작업...","사용 가능한 소스 작업이 없습니다.","가져오기 구성","사용 가능한 가져오기 구성 작업이 없습니다."],"vs/editor/contrib/comment/comment":["줄 주석 설정/해제","&&Toggle Line Comment","줄 주석 추가","줄 주석 제거","블록 주석 설정/해제","Toggle &&Block Comment"],"vs/editor/contrib/contextmenu/contextmenu":["편집기 상황에 맞는 메뉴 표시"],"vs/editor/contrib/cursorUndo/cursorUndo":["Soft Undo"],"vs/editor/contrib/find/findController":["찾기","&&Find","선택 영역에서 찾기","다음 찾기","이전 찾기","다음 선택 찾기","이전 선택 찾기","바꾸기","&&Replace"], +"vs/editor/contrib/find/findWidget":["찾기","찾기","이전 검색 결과","다음 검색 결과","선택 항목에서 찾기","닫기","바꾸기","바꾸기","바꾸기","모두 바꾸기","바꾸기 모드 설정/해제","처음 {0}개의 결과가 강조 표시되지만 모든 찾기 작업은 전체 텍스트에 대해 수행됩니다.","{0}/{1}","결과 없음"],"vs/editor/contrib/folding/folding":["펼치기","재귀적으로 펼치기","접기","재귀적으로 접기","모든 블록 코멘트를 접기","모든 영역 접기","모든 영역 펼치기","모두 접기","모두 펼치기","수준 {0} 접기"],"vs/editor/contrib/fontZoom/fontZoom":["편집기 글꼴 확대","편집기 글꼴 축소","편집기 글꼴 확대/축소 다시 설정"],"vs/editor/contrib/format/formatActions":["줄 {0}에서 1개 서식 편집을 수행했습니다.","줄 {1}에서 {0}개 서식 편집을 수행했습니다.","줄 {0}과(와) {1} 사이에서 1개 서식 편집을 수행했습니다.","줄 {1}과(와) {2} 사이에서 {0}개 서식 편집을 수행했습니다."," '{0}'-파일에 대한 설치된 형식기가 없습니다.","문서 서식"," '{0}'-파일에 대한 문서 포맷터가 설치되어 있지 않습니다.","선택 영역 서식","'{0}'-파일에 대한 선택 영역 포맷터가 설치되어 있지 않습니다."], +"vs/editor/contrib/goToDefinition/goToDefinitionCommands":["'{0}'에 대한 정의를 찾을 수 없습니다.","정의를 찾을 수 없음","– {0} 정의","정의로 이동","측면에서 정의 열기","정의 피킹(Peeking)","'{0}'에 대한 구현을 찾을 수 없습니다.","구현을 찾을 수 없습니다."," – {0} 개 구현","구현으로 이동","구현 미리 보기","'{0}'에 대한 형식 정의를 찾을 수 없습니다.","형식 정의를 찾을 수 없습니다.","– {0} 형식 정의","형식 정의로 이동","형식 정의 미리 보기"],"vs/editor/contrib/goToDefinition/goToDefinitionMouse":["{0}개 정의를 표시하려면 클릭하세요."],"vs/editor/contrib/gotoError/gotoError":["다음 문제로 이동 (오류, 경고, 정보)","이전 문제로 이동 (오류, 경고, 정보)","파일의 다음 문제로 이동 (오류, 경고, 정보)","파일의 이전 문제로 이동 (오류, 경고, 정보)"],"vs/editor/contrib/gotoError/gotoErrorWidget":["({0}/{1})","편집기 표식 탐색 위젯 오류 색입니다.","편집기 표식 탐색 위젯 경고 색입니다.","편집기 표식 탐색 위젯 정보 색입니다.","편집기 표식 탐색 위젯 배경입니다."],"vs/editor/contrib/hover/hover":["가리키기 표시"],"vs/editor/contrib/hover/modesContentHover":["로드 중..."],"vs/editor/contrib/inPlaceReplace/inPlaceReplace":["이전 값으로 바꾸기","다음 값으로 바꾸기"], +"vs/editor/contrib/linesOperations/linesOperations":["위에 줄 복사","&&Copy Line Up","아래에 줄 복사","Co&&py Line Down","줄 위로 이동","Mo&&ve Line Up","줄 아래로 이동","Move &&Line Down","줄을 오름차순 정렬","줄을 내림차순으로 정렬","후행 공백 자르기","줄 삭제","줄 들여쓰기","줄 내어쓰기","위에 줄 삽입","아래에 줄 삽입","왼쪽 모두 삭제","우측에 있는 항목 삭제","줄 연결","커서 주위 문자 바꾸기","대문자로 변환","소문자로 변환"],"vs/editor/contrib/links/links":["Cmd 키를 누르고 클릭하여 링크로 이동","Ctrl 키를 누르고 클릭하여 링크로 이동","명령을 실행하려면 Cmd+클릭","명령을 실행하려면 Ctrl+클릭","