Release build script

This commit is contained in:
Martin Aeschlimann 2016-06-22 20:53:52 +02:00
parent 2380ce142c
commit 293cc3aa55
8 changed files with 105 additions and 62 deletions

34
src/fillers/vscode-nls.ts Normal file
View file

@ -0,0 +1,34 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import {LocalizeInfo, LocalizeFunc, Options, LoadFunc} from 'vscode-nls';
export {LocalizeInfo, LocalizeFunc, Options, LoadFunc};
function format(message: string, args: any[]): string {
let result:string;
if (args.length === 0) {
result = message;
} else {
result = message.replace(/\{(\d+)\}/g, (match, rest) => {
let index = rest[0];
return typeof args[index] !== 'undefined' ? args[index] : match;
});
}
return result;
}
function localize(key: string | LocalizeInfo, message: string, ...args: any[]): string {
return format(message, args);
}
export function loadMessageBundle(file?: string): LocalizeFunc {
return localize;
}
export function config(opt?: Options | string): LoadFunc {
return loadMessageBundle;
}

View file

@ -7,9 +7,7 @@
import {LanguageServiceDefaultsImpl} from './monaco.contribution';
import {CSSWorker} from './worker';
import * as cssService from 'vscode-css-languageservice/lib/cssLanguageService';
import * as ls from 'vscode-languageserver-types/lib/main';
import * as ls from 'vscode-languageserver-types';
import Uri = monaco.Uri;
import Position = monaco.Position;
@ -20,6 +18,10 @@ import CancellationToken = monaco.CancellationToken;
import IDisposable = monaco.IDisposable;
export interface WorkerAccessor {
(first: Uri, ...more: Uri[]): Promise<CSSWorker>
}
// --- diagnostics --- ---
export class DiagnostcsAdapter {
@ -27,10 +29,7 @@ export class DiagnostcsAdapter {
private _disposables: IDisposable[] = [];
private _listener: { [uri: string]: IDisposable } = Object.create(null);
constructor(private _defaults: LanguageServiceDefaultsImpl, private _languageId: string,
private _worker: (first: Uri, ...more: Uri[]) => Promise<CSSWorker>
) {
constructor(private _languageId: string, private _worker: WorkerAccessor) {
const onModelAdd = (model: monaco.editor.IModel): void => {
let modeId = model.getModeId();
if (modeId !== this._languageId) {
@ -112,7 +111,7 @@ function toDiagnostics(resource: Uri, diag: ls.Diagnostic): monaco.editor.IMarke
};
}
// --- suggest ------
// --- completion ------
function fromPosition(position: Position): ls.Position {
if (!position) {
@ -174,7 +173,7 @@ function toTextEdit(textEdit: ls.TextEdit): monaco.editor.ISingleEditOperation {
export class CompletionAdapter implements monaco.languages.CompletionItemProvider {
constructor(private _worker: (first: Uri, ...more: Uri[]) => Promise<CSSWorker>) {
constructor(private _worker: WorkerAccessor) {
}
public get triggerCharacters(): string[] {
@ -193,7 +192,8 @@ export class CompletionAdapter implements monaco.languages.CompletionItemProvide
}
let items: monaco.languages.CompletionItem[] = info.items.map(entry => {
return {
label: entry.insertText,
label: entry.label,
insertText: entry.insertText,
sortText: entry.sortText,
filterText: entry.filterText,
documentation: entry.documentation,
@ -238,7 +238,7 @@ function toHTMLContentElements(contents: ls.MarkedString | ls.MarkedString[]): m
export class HoverAdapter implements monaco.languages.HoverProvider {
constructor(private _worker: (first: Uri, ...more: Uri[]) => Promise<CSSWorker>) {
constructor(private _worker: WorkerAccessor) {
}
provideHover(model: monaco.editor.IReadOnlyModel, position: Position, token: CancellationToken): Thenable<monaco.languages.Hover> {
@ -258,7 +258,7 @@ export class HoverAdapter implements monaco.languages.HoverProvider {
}
}
// --- occurrences ------
// --- document highlights ------
function toDocumentHighlightKind(kind: number): monaco.languages.DocumentHighlightKind {
switch (kind) {
@ -272,7 +272,7 @@ function toDocumentHighlightKind(kind: number): monaco.languages.DocumentHighlig
export class DocumentHighlightAdapter implements monaco.languages.DocumentHighlightProvider {
constructor(private _worker: (first: Uri, ...more: Uri[]) => Promise<CSSWorker>) {
constructor(private _worker: WorkerAccessor) {
}
public provideDocumentHighlights(model: monaco.editor.IReadOnlyModel, position: Position, token: CancellationToken): Thenable<monaco.languages.DocumentHighlight[]> {
@ -305,7 +305,7 @@ function toLocation(location: ls.Location): monaco.languages.Location {
export class DefinitionAdapter {
constructor(private _worker: (first: Uri, ...more: Uri[]) => Promise<CSSWorker>) {
constructor(private _worker: WorkerAccessor) {
}
public provideDefinition(model: monaco.editor.IReadOnlyModel, position: Position, token: CancellationToken): Thenable<monaco.languages.Definition> {
@ -326,7 +326,7 @@ export class DefinitionAdapter {
export class ReferenceAdapter implements monaco.languages.ReferenceProvider {
constructor(private _worker: (first: Uri, ...more: Uri[]) => Promise<CSSWorker>) {
constructor(private _worker: WorkerAccessor) {
}
provideReferences(model: monaco.editor.IReadOnlyModel, position: Position, context: monaco.languages.ReferenceContext, token: CancellationToken): Thenable<monaco.languages.Location[]> {
@ -349,11 +349,11 @@ function toWorkspaceEdit(edit: ls.WorkspaceEdit): monaco.languages.WorkspaceEdit
if (!edit || !edit.changes) {
return void 0;
}
let resourceEdits : monaco.languages.IResourceEdit[] = [];
let resourceEdits: monaco.languages.IResourceEdit[] = [];
for (let uri in edit.changes) {
let edits = edit.changes[uri];
for (let e of edits) {
resourceEdits.push({resource: Uri.parse(uri), range: toRange(e.range), newText: e.newText });
resourceEdits.push({ resource: Uri.parse(uri), range: toRange(e.range), newText: e.newText });
}
}
@ -365,7 +365,7 @@ function toWorkspaceEdit(edit: ls.WorkspaceEdit): monaco.languages.WorkspaceEdit
export class RenameAdapter implements monaco.languages.RenameProvider {
constructor(private _worker: (first: Uri, ...more: Uri[]) => Promise<CSSWorker>) {
constructor(private _worker: WorkerAccessor) {
}
provideRenameEdits(model: monaco.editor.IReadOnlyModel, position: Position, newName: string, token: CancellationToken): Thenable<monaco.languages.WorkspaceEdit> {
@ -379,7 +379,7 @@ export class RenameAdapter implements monaco.languages.RenameProvider {
}
}
// --- outline ------
// --- document symbols ------
function toSymbolKind(kind: ls.SymbolKind): monaco.languages.SymbolKind {
let lsKind = ls.SymbolKind;
@ -411,7 +411,7 @@ function toSymbolKind(kind: ls.SymbolKind): monaco.languages.SymbolKind {
export class DocumentSymbolAdapter implements monaco.languages.DocumentSymbolProvider {
constructor(private _worker: (first: Uri, ...more: Uri[]) => Promise<CSSWorker>) {
constructor(private _worker: WorkerAccessor) {
}
public provideDocumentSymbols(model: monaco.editor.IReadOnlyModel, token: CancellationToken): Thenable<monaco.languages.SymbolInformation[]> {

View file

@ -38,7 +38,6 @@ export function setupCSS(defaults:LanguageServiceDefaultsImpl): void {
setupMode(
defaults,
'css',
cssLanguageConfiguration
);
}
@ -63,7 +62,6 @@ export function setupLESS(defaults:LanguageServiceDefaultsImpl): void {
setupMode(
defaults,
'less',
lessLanguageConfiguration
);
}
@ -88,12 +86,11 @@ export function setupSCSS(defaults:LanguageServiceDefaultsImpl): void {
setupMode(
defaults,
'scss',
scssLanguageConfiguration
);
}
function setupMode(defaults:LanguageServiceDefaultsImpl, modeId:string, languageConfiguration: monaco.languages.LanguageConfiguration): void {
function setupMode(defaults:LanguageServiceDefaultsImpl, languageConfiguration: monaco.languages.LanguageConfiguration): void {
let disposables: IDisposable[] = [];
@ -104,15 +101,17 @@ function setupMode(defaults:LanguageServiceDefaultsImpl, modeId:string, language
return client.getLanguageServiceWorker(...[first].concat(more));
};
disposables.push(monaco.languages.registerCompletionItemProvider(modeId, new languageFeatures.CompletionAdapter(worker)));
disposables.push(monaco.languages.registerHoverProvider(modeId, new languageFeatures.HoverAdapter(worker)));
disposables.push(monaco.languages.registerDocumentHighlightProvider(modeId, new languageFeatures.DocumentHighlightAdapter(worker)));
disposables.push(monaco.languages.registerDefinitionProvider(modeId, new languageFeatures.DefinitionAdapter(worker)));
disposables.push(monaco.languages.registerReferenceProvider(modeId, new languageFeatures.ReferenceAdapter(worker)));
disposables.push(monaco.languages.registerDocumentSymbolProvider(modeId, new languageFeatures.DocumentSymbolAdapter(worker)));
disposables.push(monaco.languages.registerRenameProvider(modeId, new languageFeatures.RenameAdapter(worker)));
disposables.push(new languageFeatures.DiagnostcsAdapter(defaults, modeId, worker));
disposables.push(monaco.languages.setLanguageConfiguration(modeId, languageConfiguration));
let languageId = defaults.languageId;
disposables.push(monaco.languages.registerCompletionItemProvider(languageId, new languageFeatures.CompletionAdapter(worker)));
disposables.push(monaco.languages.registerHoverProvider(languageId, new languageFeatures.HoverAdapter(worker)));
disposables.push(monaco.languages.registerDocumentHighlightProvider(languageId, new languageFeatures.DocumentHighlightAdapter(worker)));
disposables.push(monaco.languages.registerDefinitionProvider(languageId, new languageFeatures.DefinitionAdapter(worker)));
disposables.push(monaco.languages.registerReferenceProvider(languageId, new languageFeatures.ReferenceAdapter(worker)));
disposables.push(monaco.languages.registerDocumentSymbolProvider(languageId, new languageFeatures.DocumentSymbolAdapter(worker)));
disposables.push(monaco.languages.registerRenameProvider(languageId, new languageFeatures.RenameAdapter(worker)));
disposables.push(new languageFeatures.DiagnostcsAdapter(languageId, worker));
disposables.push(monaco.languages.setLanguageConfiguration(languageId, languageConfiguration));
}

View file

@ -18,8 +18,10 @@ export class LanguageServiceDefaultsImpl implements monaco.languages.css.Languag
private _onDidChange = new Emitter<monaco.languages.css.LanguageServiceDefaults>();
private _diagnosticsOptions: monaco.languages.css.DiagnosticsOptions;
private _languageId: string;
constructor(diagnosticsOptions: monaco.languages.css.DiagnosticsOptions) {
constructor(languageId: string, diagnosticsOptions: monaco.languages.css.DiagnosticsOptions) {
this._languageId = languageId;
this.setDiagnosticsOptions(diagnosticsOptions);
}
@ -27,6 +29,10 @@ export class LanguageServiceDefaultsImpl implements monaco.languages.css.Languag
return this._onDidChange.event;
}
get languageId(): string {
return this._languageId;
}
get diagnosticsOptions(): monaco.languages.css.DiagnosticsOptions {
return this._diagnosticsOptions;
}
@ -61,9 +67,9 @@ const diagnosticDefault : monaco.languages.css.DiagnosticsOptions = {
}
}
const cssDefaults = new LanguageServiceDefaultsImpl(diagnosticDefault);
const scssDefaults = new LanguageServiceDefaultsImpl(diagnosticDefault);
const lessDefaults = new LanguageServiceDefaultsImpl(diagnosticDefault);
const cssDefaults = new LanguageServiceDefaultsImpl('css', diagnosticDefault);
const scssDefaults = new LanguageServiceDefaultsImpl('scss', diagnosticDefault);
const lessDefaults = new LanguageServiceDefaultsImpl('less', diagnosticDefault);
// Export API

View file

@ -6,8 +6,8 @@
import Promise = monaco.Promise;
import * as cssService from 'vscode-css-languageservice/lib/cssLanguageService';
import * as ls from 'vscode-languageserver-types/lib/main';
import * as cssService from 'vscode-css-languageservice';
import * as ls from 'vscode-languageserver-types';
export class CSSWorker {

View file

@ -62,11 +62,12 @@ export class WorkerManager {
this._worker = monaco.editor.createWebWorker<CSSWorker>({
// module that exports the create() method and returns a `CSSWorker` instance
moduleId: 'vs/language/css/src/worker',
moduleId: 'vs/language/css/worker',
// passed in to the create() method
createData: {
languageSettings: this._defaults.diagnosticsOptions
languageSettings: this._defaults.diagnosticsOptions,
languageId: this._defaults.languageId
}
});