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

View file

@ -1,17 +1,9 @@
<<<<<<< dc598757e71a1ee33423bd24c3cb1b4b849722e6
# monaco-css # monaco-css
CSS language support for the Monaco editor CSS language support for the Monaco Editor.
=======
# Monaco TypeScript
TypeScript and JavaScript language support for the Monaco Editor.
![typescript](https://cloud.githubusercontent.com/assets/5047891/15926623/5262fe08-2e3d-11e6-9b90-1d43fda07178.gif)
## Installing ## Installing
This npm module is bundled and distributed in the [monaco-editor](https://www.npmjs.com/package/monaco-editor) npm module. This npm module is bundled and distributed in the [monaco-editor](https://www.npmjs.com/package/monaco-editor) npm module.
## License ## License
[MIT](https://github.com/Microsoft/monaco-typescript/blob/master/LICENSE.md) [MIT](https://github.com/Microsoft/monaco-css/blob/master/LICENSE.md)
>>>>>>> Init

View file

@ -24,9 +24,9 @@ gulp.task('release', ['clean-release','compile'], function() {
var BUNDLED_FILE_HEADER = [ var BUNDLED_FILE_HEADER = [
'/*!-----------------------------------------------------------------------------', '/*!-----------------------------------------------------------------------------',
' * Copyright (c) Microsoft Corporation. All rights reserved.', ' * Copyright (c) Microsoft Corporation. All rights reserved.',
' * monaco-typescript version: ' + headerVersion, ' * monaco-css version: ' + headerVersion,
' * Released under the MIT license', ' * Released under the MIT license',
' * https://github.com/Microsoft/monaco-typescript/blob/master/LICENSE.md', ' * https://github.com/Microsoft/monaco-css/blob/master/LICENSE.md',
' *-----------------------------------------------------------------------------*/', ' *-----------------------------------------------------------------------------*/',
'' ''
].join('\n'); ].join('\n');
@ -38,22 +38,33 @@ gulp.task('release', ['clean-release','compile'], function() {
out: moduleId + '.js', out: moduleId + '.js',
exclude: exclude, exclude: exclude,
paths: { paths: {
'vs/language/css': __dirname + '/out', 'vs/language/css': __dirname + '/out'
'vscode-css-languageservice/lib': __dirname + '/node_modules/vscode-css-languageservice/lib', },
'vscode-languageserver-types/lib': __dirname + '/node_modules/vscode-languageserver-types/lib' packages: [{
} name: 'vscode-css-languageservice',
location: __dirname + '/node_modules/vscode-css-languageservice/lib',
main: 'cssLanguageService'
}, {
name: 'vscode-languageserver-types',
location: __dirname + '/node_modules/vscode-languageserver-types/lib',
main: 'main'
}, {
name: 'vscode-nls',
location: __dirname + '/out/fillers',
main: 'vscode-nls'
}]
}) })
} }
return merge( return merge(
merge( merge(
bundleOne('monaco.contribution'), bundleOne('monaco.contribution', ['vs/language/css/mode']),
bundleOne('mode'), bundleOne('mode'),
bundleOne('worker') bundleOne('worker')
) )
.pipe(uglify({ // .pipe(uglify({
preserveComments: 'some' // preserveComments: 'some'
})) // }))
.pipe(es.through(function(data) { .pipe(es.through(function(data) {
data.contents = new Buffer( data.contents = new Buffer(
BUNDLED_FILE_HEADER BUNDLED_FILE_HEADER

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 {LanguageServiceDefaultsImpl} from './monaco.contribution';
import {CSSWorker} from './worker'; import {CSSWorker} from './worker';
import * as cssService from 'vscode-css-languageservice/lib/cssLanguageService'; import * as ls from 'vscode-languageserver-types';
import * as ls from 'vscode-languageserver-types/lib/main';
import Uri = monaco.Uri; import Uri = monaco.Uri;
import Position = monaco.Position; import Position = monaco.Position;
@ -20,6 +18,10 @@ import CancellationToken = monaco.CancellationToken;
import IDisposable = monaco.IDisposable; import IDisposable = monaco.IDisposable;
export interface WorkerAccessor {
(first: Uri, ...more: Uri[]): Promise<CSSWorker>
}
// --- diagnostics --- --- // --- diagnostics --- ---
export class DiagnostcsAdapter { export class DiagnostcsAdapter {
@ -27,10 +29,7 @@ export class DiagnostcsAdapter {
private _disposables: IDisposable[] = []; private _disposables: IDisposable[] = [];
private _listener: { [uri: string]: IDisposable } = Object.create(null); private _listener: { [uri: string]: IDisposable } = Object.create(null);
constructor(private _defaults: LanguageServiceDefaultsImpl, private _languageId: string, constructor(private _languageId: string, private _worker: WorkerAccessor) {
private _worker: (first: Uri, ...more: Uri[]) => Promise<CSSWorker>
) {
const onModelAdd = (model: monaco.editor.IModel): void => { const onModelAdd = (model: monaco.editor.IModel): void => {
let modeId = model.getModeId(); let modeId = model.getModeId();
if (modeId !== this._languageId) { 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 { function fromPosition(position: Position): ls.Position {
if (!position) { if (!position) {
@ -174,7 +173,7 @@ function toTextEdit(textEdit: ls.TextEdit): monaco.editor.ISingleEditOperation {
export class CompletionAdapter implements monaco.languages.CompletionItemProvider { export class CompletionAdapter implements monaco.languages.CompletionItemProvider {
constructor(private _worker: (first: Uri, ...more: Uri[]) => Promise<CSSWorker>) { constructor(private _worker: WorkerAccessor) {
} }
public get triggerCharacters(): string[] { public get triggerCharacters(): string[] {
@ -193,7 +192,8 @@ export class CompletionAdapter implements monaco.languages.CompletionItemProvide
} }
let items: monaco.languages.CompletionItem[] = info.items.map(entry => { let items: monaco.languages.CompletionItem[] = info.items.map(entry => {
return { return {
label: entry.insertText, label: entry.label,
insertText: entry.insertText,
sortText: entry.sortText, sortText: entry.sortText,
filterText: entry.filterText, filterText: entry.filterText,
documentation: entry.documentation, documentation: entry.documentation,
@ -238,7 +238,7 @@ function toHTMLContentElements(contents: ls.MarkedString | ls.MarkedString[]): m
export class HoverAdapter implements monaco.languages.HoverProvider { 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> { 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 { function toDocumentHighlightKind(kind: number): monaco.languages.DocumentHighlightKind {
switch (kind) { switch (kind) {
@ -272,7 +272,7 @@ function toDocumentHighlightKind(kind: number): monaco.languages.DocumentHighlig
export class DocumentHighlightAdapter implements monaco.languages.DocumentHighlightProvider { 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[]> { 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 { 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> { 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 { 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[]> { 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) { if (!edit || !edit.changes) {
return void 0; return void 0;
} }
let resourceEdits : monaco.languages.IResourceEdit[] = []; let resourceEdits: monaco.languages.IResourceEdit[] = [];
for (let uri in edit.changes) { for (let uri in edit.changes) {
let edits = edit.changes[uri]; let edits = edit.changes[uri];
for (let e of edits) { 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 { 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> { 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 { function toSymbolKind(kind: ls.SymbolKind): monaco.languages.SymbolKind {
let lsKind = ls.SymbolKind; let lsKind = ls.SymbolKind;
@ -411,7 +411,7 @@ function toSymbolKind(kind: ls.SymbolKind): monaco.languages.SymbolKind {
export class DocumentSymbolAdapter implements monaco.languages.DocumentSymbolProvider { 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[]> { 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( setupMode(
defaults, defaults,
'css',
cssLanguageConfiguration cssLanguageConfiguration
); );
} }
@ -63,7 +62,6 @@ export function setupLESS(defaults:LanguageServiceDefaultsImpl): void {
setupMode( setupMode(
defaults, defaults,
'less',
lessLanguageConfiguration lessLanguageConfiguration
); );
} }
@ -88,12 +86,11 @@ export function setupSCSS(defaults:LanguageServiceDefaultsImpl): void {
setupMode( setupMode(
defaults, defaults,
'scss',
scssLanguageConfiguration scssLanguageConfiguration
); );
} }
function setupMode(defaults:LanguageServiceDefaultsImpl, modeId:string, languageConfiguration: monaco.languages.LanguageConfiguration): void { function setupMode(defaults:LanguageServiceDefaultsImpl, languageConfiguration: monaco.languages.LanguageConfiguration): void {
let disposables: IDisposable[] = []; let disposables: IDisposable[] = [];
@ -104,15 +101,17 @@ function setupMode(defaults:LanguageServiceDefaultsImpl, modeId:string, language
return client.getLanguageServiceWorker(...[first].concat(more)); return client.getLanguageServiceWorker(...[first].concat(more));
}; };
disposables.push(monaco.languages.registerCompletionItemProvider(modeId, new languageFeatures.CompletionAdapter(worker))); let languageId = defaults.languageId;
disposables.push(monaco.languages.registerHoverProvider(modeId, new languageFeatures.HoverAdapter(worker)));
disposables.push(monaco.languages.registerDocumentHighlightProvider(modeId, new languageFeatures.DocumentHighlightAdapter(worker))); disposables.push(monaco.languages.registerCompletionItemProvider(languageId, new languageFeatures.CompletionAdapter(worker)));
disposables.push(monaco.languages.registerDefinitionProvider(modeId, new languageFeatures.DefinitionAdapter(worker))); disposables.push(monaco.languages.registerHoverProvider(languageId, new languageFeatures.HoverAdapter(worker)));
disposables.push(monaco.languages.registerReferenceProvider(modeId, new languageFeatures.ReferenceAdapter(worker))); disposables.push(monaco.languages.registerDocumentHighlightProvider(languageId, new languageFeatures.DocumentHighlightAdapter(worker)));
disposables.push(monaco.languages.registerDocumentSymbolProvider(modeId, new languageFeatures.DocumentSymbolAdapter(worker))); disposables.push(monaco.languages.registerDefinitionProvider(languageId, new languageFeatures.DefinitionAdapter(worker)));
disposables.push(monaco.languages.registerRenameProvider(modeId, new languageFeatures.RenameAdapter(worker))); disposables.push(monaco.languages.registerReferenceProvider(languageId, new languageFeatures.ReferenceAdapter(worker)));
disposables.push(new languageFeatures.DiagnostcsAdapter(defaults, modeId, worker)); disposables.push(monaco.languages.registerDocumentSymbolProvider(languageId, new languageFeatures.DocumentSymbolAdapter(worker)));
disposables.push(monaco.languages.setLanguageConfiguration(modeId, languageConfiguration)); 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 _onDidChange = new Emitter<monaco.languages.css.LanguageServiceDefaults>();
private _diagnosticsOptions: monaco.languages.css.DiagnosticsOptions; 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); this.setDiagnosticsOptions(diagnosticsOptions);
} }
@ -27,6 +29,10 @@ export class LanguageServiceDefaultsImpl implements monaco.languages.css.Languag
return this._onDidChange.event; return this._onDidChange.event;
} }
get languageId(): string {
return this._languageId;
}
get diagnosticsOptions(): monaco.languages.css.DiagnosticsOptions { get diagnosticsOptions(): monaco.languages.css.DiagnosticsOptions {
return this._diagnosticsOptions; return this._diagnosticsOptions;
} }
@ -61,9 +67,9 @@ const diagnosticDefault : monaco.languages.css.DiagnosticsOptions = {
} }
} }
const cssDefaults = new LanguageServiceDefaultsImpl(diagnosticDefault); const cssDefaults = new LanguageServiceDefaultsImpl('css', diagnosticDefault);
const scssDefaults = new LanguageServiceDefaultsImpl(diagnosticDefault); const scssDefaults = new LanguageServiceDefaultsImpl('scss', diagnosticDefault);
const lessDefaults = new LanguageServiceDefaultsImpl(diagnosticDefault); const lessDefaults = new LanguageServiceDefaultsImpl('less', diagnosticDefault);
// Export API // Export API

View file

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

View file

@ -62,11 +62,12 @@ export class WorkerManager {
this._worker = monaco.editor.createWebWorker<CSSWorker>({ this._worker = monaco.editor.createWebWorker<CSSWorker>({
// module that exports the create() method and returns a `CSSWorker` instance // 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 // passed in to the create() method
createData: { createData: {
languageSettings: this._defaults.diagnosticsOptions languageSettings: this._defaults.diagnosticsOptions,
languageId: this._defaults.languageId
} }
}); });