Merge VS Code 1.21 source code (#1067)

* Initial VS Code 1.21 file copy with patches

* A few more merges

* Post npm install

* Fix batch of build breaks

* Fix more build breaks

* Fix more build errors

* Fix more build breaks

* Runtime fixes 1

* Get connection dialog working with some todos

* Fix a few packaging issues

* Copy several node_modules to package build to fix loader issues

* Fix breaks from master

* A few more fixes

* Make tests pass

* First pass of license header updates

* Second pass of license header updates

* Fix restore dialog issues

* Remove add additional themes menu items

* fix select box issues where the list doesn't show up

* formatting

* Fix editor dispose issue

* Copy over node modules to correct location on all platforms
This commit is contained in:
Karl Burtram
2018-04-04 15:27:51 -07:00
committed by GitHub
parent 5fba3e31b4
commit dafb780987
9412 changed files with 141255 additions and 98813 deletions

View File

@@ -6,6 +6,7 @@
'use strict';
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
import URI from 'vs/base/common/uri';
export const IClipboardService = createDecorator<IClipboardService>('clipboardService');
@@ -32,4 +33,19 @@ export interface IClipboardService {
* Writes text to the system find pasteboard.
*/
writeFindText(text: string): void;
/**
* Writes files to the system clipboard.
*/
writeFiles(files: URI[]): void;
/**
* Reads files from the system clipboard.
*/
readFiles(): URI[];
/**
* Find out if files are copied to the clipboard.
*/
hasFiles(): boolean;
}

View File

@@ -7,10 +7,15 @@
import { IClipboardService } from 'vs/platform/clipboard/common/clipboardService';
import { clipboard } from 'electron';
import * as platform from 'vs/base/common/platform';
import URI from 'vs/base/common/uri';
import { isMacintosh } from 'vs/base/common/platform';
import { Schemas } from 'vs/base/common/network';
export class ClipboardService implements IClipboardService {
// Clipboard format for files
private static FILE_FORMAT = 'code/file-list';
_serviceBrand: any;
public writeText(text: string): void {
@@ -22,15 +27,53 @@ export class ClipboardService implements IClipboardService {
}
public readFindText(): string {
if (platform.isMacintosh) {
if (isMacintosh) {
return clipboard.readFindText();
}
return '';
}
public writeFindText(text: string): void {
if (platform.isMacintosh) {
if (isMacintosh) {
clipboard.writeFindText(text);
}
}
}
public writeFiles(resources: URI[]): void {
const files = resources.filter(f => f.scheme === Schemas.file);
if (files.length) {
clipboard.writeBuffer(ClipboardService.FILE_FORMAT, this.filesToBuffer(files));
}
}
public readFiles(): URI[] {
return this.bufferToFiles(clipboard.readBuffer(ClipboardService.FILE_FORMAT));
}
public hasFiles(): boolean {
return clipboard.has(ClipboardService.FILE_FORMAT);
}
private filesToBuffer(resources: URI[]): Buffer {
return Buffer.from(resources.map(r => r.fsPath).join('\n'));
}
private bufferToFiles(buffer: Buffer): URI[] {
if (!buffer) {
return [];
}
const bufferValue = buffer.toString();
if (!bufferValue) {
return [];
}
try {
return bufferValue.split('\n').map(f => URI.file(f));
} catch (error) {
return []; // do not trust clipboard data
}
}
}