Adopt SnippetString and publish 1.2.1

This commit is contained in:
Martin Aeschlimann 2017-01-27 16:02:29 +01:00
parent 04170905b3
commit f1b96cadd5
4 changed files with 51 additions and 42 deletions

View file

@ -1,13 +1,13 @@
{ {
"name": "monaco-html", "name": "monaco-html",
"version": "1.2.0", "version": "1.2.1",
"description": "HTML plugin for the Monaco Editor", "description": "HTML plugin for the Monaco Editor",
"scripts": { "scripts": {
"compile": "gulp compile", "compile": "gulp compile",
"watch": "gulp watch", "watch": "gulp watch",
"prepublish": "gulp release", "prepublish": "gulp release",
"install-service-next": "npm install vscode-html-languageservice@next -f -D", "install-service-next": "npm install vscode-html-languageservice@next -f -D && npm install vscode-languageserver-types@next -f -D",
"install-service-local": "npm install ../vscode-html-languageservice -f -D" "install-service-local": "npm install ../vscode-html-languageservice -f -D && npm install ../vscode-languageserver-node/types -f -D"
}, },
"author": "Microsoft Corporation", "author": "Microsoft Corporation",
"license": "MIT", "license": "MIT",
@ -25,13 +25,13 @@
"gulp-tsb": "^2.0.0", "gulp-tsb": "^2.0.0",
"gulp-uglify": "^1.5.3", "gulp-uglify": "^1.5.3",
"merge-stream": "^1.0.0", "merge-stream": "^1.0.0",
"monaco-editor-core": "^0.7.0", "monaco-editor-core": "^0.8.1",
"monaco-languages": "^0.6.1", "monaco-languages": "^0.6.1",
"monaco-typescript": "^2.0.1", "monaco-typescript": "^2.0.1",
"object-assign": "^4.1.0", "object-assign": "^4.1.0",
"rimraf": "^2.5.2", "rimraf": "^2.5.2",
"typescript": "2.0.3", "typescript": "^2.1.5",
"vscode-html-languageservice": "1.0.0-next.6", "vscode-html-languageservice": "^2.0.0-next.6",
"vscode-languageserver-types": "^1.0.4-next.2" "vscode-languageserver-types": "^3.0.2-beta.5"
} }
} }

View file

@ -204,16 +204,6 @@ function toTextEdit(textEdit: ls.TextEdit): monaco.editor.ISingleEditOperation {
} }
} }
function fromTextEdit(editOp: monaco.editor.ISingleEditOperation): ls.TextEdit {
if (!editOp) {
return void 0;
}
return {
range: fromRange(Range.lift(editOp.range)),
newText: editOp.text
}
}
interface DataCompletionItem extends monaco.languages.CompletionItem { interface DataCompletionItem extends monaco.languages.CompletionItem {
data?: any; data?: any;
} }
@ -233,17 +223,25 @@ function toCompletionItem(entry: ls.CompletionItem): DataCompletionItem {
} }
function fromCompletionItem(entry: DataCompletionItem): ls.CompletionItem { function fromCompletionItem(entry: DataCompletionItem): ls.CompletionItem {
return { let item : ls.CompletionItem = {
label: entry.label, label: entry.label,
insertText: entry.insertText,
sortText: entry.sortText, sortText: entry.sortText,
filterText: entry.filterText, filterText: entry.filterText,
documentation: entry.documentation, documentation: entry.documentation,
detail: entry.detail, detail: entry.detail,
kind: fromCompletionItemKind(entry.kind), kind: fromCompletionItemKind(entry.kind),
textEdit: fromTextEdit(entry.textEdit),
data: entry.data data: entry.data
}; };
if (typeof entry.insertText === 'object' && typeof entry.insertText.value === 'string') {
item.insertText = entry.insertText.value;
item.insertTextFormat = ls.InsertTextFormat.Snippet
} else {
item.insertText = <string> entry.insertText;
}
if (entry.range) {
item.textEdit = ls.TextEdit.replace(fromRange(entry.range), item.insertText);
}
return item;
} }
@ -261,12 +259,13 @@ export class CompletionAdapter implements monaco.languages.CompletionItemProvide
const resource = model.uri; const resource = model.uri;
return wireCancellationToken(token, this._worker(resource).then(worker => { return wireCancellationToken(token, this._worker(resource).then(worker => {
return worker.doComplete(resource.toString(), fromPosition(position)).then(info => { return worker.doComplete(resource.toString(), fromPosition(position));
}).then(info => {
if (!info) { if (!info) {
return; return;
} }
let items: monaco.languages.CompletionItem[] = info.items.map(entry => { let items: monaco.languages.CompletionItem[] = info.items.map(entry => {
return { let item : monaco.languages.CompletionItem = {
label: entry.label, label: entry.label,
insertText: entry.insertText, insertText: entry.insertText,
sortText: entry.sortText, sortText: entry.sortText,
@ -274,15 +273,21 @@ export class CompletionAdapter implements monaco.languages.CompletionItemProvide
documentation: entry.documentation, documentation: entry.documentation,
detail: entry.detail, detail: entry.detail,
kind: toCompletionItemKind(entry.kind), kind: toCompletionItemKind(entry.kind),
textEdit: toTextEdit(entry.textEdit)
}; };
if (entry.textEdit) {
item.range = toRange(entry.textEdit.range);
item.insertText = entry.textEdit.newText;
}
if (entry.insertTextFormat === ls.InsertTextFormat.Snippet) {
item.insertText = { value: <string> item.insertText };
}
return item;
}); });
return <monaco.languages.CompletionList>{ return {
isIncomplete: info.isIncomplete, isIncomplete: info.isIncomplete,
items: items items: items
}; };
});
})); }));
} }
} }

View file

@ -47,13 +47,15 @@ const formatDefaults: monaco.languages.html.HTMLFormatConfiguration = {
tabSize: 4, tabSize: 4,
insertSpaces: false, insertSpaces: false,
wrapLineLength: 120, wrapLineLength: 120,
unformatted: 'a, abbr, acronym, b, bdo, big, br, button, cite, code, dfn, em, i, img, input, kbd, label, map, object, q, samp, script, select, small, span, strong, sub, sup, textarea, tt, var', unformatted: 'default": "a, abbr, acronym, b, bdo, big, br, button, cite, code, dfn, em, i, img, input, kbd, label, map, object, q, samp, select, small, span, strong, sub, sup, textarea, tt, var',
contentUnformatted: 'pre',
indentInnerHtml: false, indentInnerHtml: false,
preserveNewLines: true, preserveNewLines: true,
maxPreserveNewLines: null, maxPreserveNewLines: null,
indentHandlebars: false, indentHandlebars: false,
endWithNewline: false, endWithNewline: false,
extraLiners: 'head, body, /html' extraLiners: 'head, body, /html',
wrapAttributes: 'auto'
}; };
const htmlOptionsDefault: monaco.languages.html.Options = { const htmlOptionsDefault: monaco.languages.html.Options = {

2
src/monaco.d.ts vendored
View file

@ -9,12 +9,14 @@ declare module monaco.languages.html {
readonly insertSpaces: boolean; readonly insertSpaces: boolean;
readonly wrapLineLength: number; readonly wrapLineLength: number;
readonly unformatted: string; readonly unformatted: string;
readonly contentUnformatted: string;
readonly indentInnerHtml: boolean; readonly indentInnerHtml: boolean;
readonly preserveNewLines: boolean; readonly preserveNewLines: boolean;
readonly maxPreserveNewLines: number; readonly maxPreserveNewLines: number;
readonly indentHandlebars: boolean; readonly indentHandlebars: boolean;
readonly endWithNewline: boolean; readonly endWithNewline: boolean;
readonly extraLiners: string; readonly extraLiners: string;
readonly wrapAttributes: 'auto' | 'force' | 'force-aligned' | 'force-expand-multiline';
} }
export interface CompletionConfiguration { export interface CompletionConfiguration {