mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 18:46:40 -05:00
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:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user