Fixes #2285 : [css] CSS hovers not showing
This commit is contained in:
parent
b0b6af5754
commit
ba8c37b061
|
@ -80,14 +80,14 @@ export class CSSWorker extends AbstractModeWorker {
|
|||
|
||||
this.languageService.join().then(() => {
|
||||
|
||||
var modelMirror = this.resourceService.get(resource),
|
||||
let modelMirror = this.resourceService.get(resource),
|
||||
node = this.languageService.getStylesheet(resource),
|
||||
entries: nodes.IMarker[] = [];
|
||||
|
||||
entries.push.apply(entries, nodes.ParseErrorCollector.entries(node));
|
||||
entries.push.apply(entries, this.collectLintEntries(node));
|
||||
|
||||
var markerData = entries
|
||||
let markerData = entries
|
||||
.filter(entry => entry.getLevel() !== _level.Level.Ignore)
|
||||
.map(entry => this._createMarkerData(modelMirror, entry));
|
||||
|
||||
|
@ -96,7 +96,7 @@ export class CSSWorker extends AbstractModeWorker {
|
|||
}
|
||||
|
||||
private _createMarkerData(model: EditorCommon.IMirrorModel, marker: nodes.IMarker): IMarkerData {
|
||||
var range = model.getRangeFromOffsetAndLength(marker.getOffset(), marker.getLength());
|
||||
let range = model.getRangeFromOffsetAndLength(marker.getOffset(), marker.getLength());
|
||||
return <IMarkerData> {
|
||||
code: marker.getRule().id,
|
||||
message: marker.getMessage(),
|
||||
|
@ -120,8 +120,8 @@ export class CSSWorker extends AbstractModeWorker {
|
|||
|
||||
return this.languageService.join().then(() => {
|
||||
|
||||
var model = this.resourceService.get(resource);
|
||||
var result = this.createIntellisense().getCompletionsAtPosition(this.languageService, model, resource, position);
|
||||
let model = this.resourceService.get(resource);
|
||||
let result = this.createIntellisense().getCompletionsAtPosition(this.languageService, model, resource, position);
|
||||
return result;
|
||||
});
|
||||
|
||||
|
@ -131,14 +131,14 @@ export class CSSWorker extends AbstractModeWorker {
|
|||
|
||||
return this.languageService.join().then(() => {
|
||||
|
||||
var model = this.resourceService.get(resource),
|
||||
let model = this.resourceService.get(resource),
|
||||
offset = model.getOffsetFromPosition(position),
|
||||
styleSheet = this.languageService.getStylesheet(resource),
|
||||
path = nodes.getNodePath(styleSheet, offset),
|
||||
result: Modes.ILogicalSelectionEntry[] = [];
|
||||
|
||||
for (var i = 0; i < path.length; i++) {
|
||||
var node = path[i];
|
||||
for (let i = 0; i < path.length; i++) {
|
||||
let node = path[i];
|
||||
if(node.offset === -1 || node.length === -1) {
|
||||
continue;
|
||||
}
|
||||
|
@ -159,13 +159,13 @@ export class CSSWorker extends AbstractModeWorker {
|
|||
|
||||
return this.languageService.join().then(() => {
|
||||
|
||||
var model = this.resourceService.get(resource),
|
||||
let model = this.resourceService.get(resource),
|
||||
stylesheet = this.languageService.getStylesheet(resource),
|
||||
result:Modes.IOutlineEntry[] = [];
|
||||
|
||||
stylesheet.accept((node) => {
|
||||
|
||||
var entry:Modes.IOutlineEntry = {
|
||||
let entry:Modes.IOutlineEntry = {
|
||||
label: null,
|
||||
type: 'rule',
|
||||
range: null,
|
||||
|
@ -176,7 +176,7 @@ export class CSSWorker extends AbstractModeWorker {
|
|||
entry.label = node.getText();
|
||||
} else if(node instanceof nodes.VariableDeclaration) {
|
||||
entry.label = (<nodes.VariableDeclaration> node).getName();
|
||||
entry.type = 'variable';
|
||||
entry.type = 'letiable';
|
||||
} else if(node instanceof nodes.MixinDeclaration) {
|
||||
entry.label = (<nodes.MixinDeclaration> node).getName();
|
||||
entry.type = 'method';
|
||||
|
@ -205,25 +205,35 @@ export class CSSWorker extends AbstractModeWorker {
|
|||
|
||||
return this.languageService.join().then(() => {
|
||||
|
||||
var model = this.resourceService.get(resource),
|
||||
let model = this.resourceService.get(resource),
|
||||
offset = model.getOffsetFromPosition(position),
|
||||
stylesheet = this.languageService.getStylesheet(resource),
|
||||
nodepath = nodes.getNodePath(stylesheet, offset);
|
||||
|
||||
for (var i = 0; i < nodepath.length; i++) {
|
||||
var node = nodepath[i];
|
||||
if(node instanceof nodes.Selector) {
|
||||
for (let i = 0; i < nodepath.length; i++) {
|
||||
let node = nodepath[i];
|
||||
if (node instanceof nodes.Selector) {
|
||||
return {
|
||||
htmlContent: [selectorPrinting.selectorToHtml(<nodes.Selector> node)],
|
||||
range: this._range(node, model)
|
||||
};
|
||||
}
|
||||
if(node instanceof nodes.SimpleSelector) {
|
||||
if (node instanceof nodes.SimpleSelector) {
|
||||
return {
|
||||
htmlContent: [selectorPrinting.simpleSelectorToHtml(<nodes.SimpleSelector> node)],
|
||||
range: this._range(node, model)
|
||||
};
|
||||
}
|
||||
if (node instanceof nodes.Declaration) {
|
||||
let propertyName = node.getFullPropertyName();
|
||||
let entry = languageFacts.getProperties()[propertyName];
|
||||
if (entry) {
|
||||
return {
|
||||
htmlContent: [{ text: entry.description }],
|
||||
range: this._range(node, model)
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
|
@ -234,7 +244,7 @@ export class CSSWorker extends AbstractModeWorker {
|
|||
|
||||
return this.languageService.join().then(() => {
|
||||
|
||||
var model = this.resourceService.get(resource),
|
||||
let model = this.resourceService.get(resource),
|
||||
offset = model.getOffsetFromPosition(position),
|
||||
node = occurrences.findDeclaration(this.languageService.getStylesheet(resource), offset);
|
||||
|
||||
|
@ -253,7 +263,7 @@ export class CSSWorker extends AbstractModeWorker {
|
|||
|
||||
return this.languageService.join().then(() => {
|
||||
|
||||
var model = this.resourceService.get(resource),
|
||||
let model = this.resourceService.get(resource),
|
||||
offset = model.getOffsetFromPosition(position),
|
||||
nodes = occurrences.findOccurrences(this.languageService.getStylesheet(resource), offset);
|
||||
|
||||
|
@ -269,7 +279,7 @@ export class CSSWorker extends AbstractModeWorker {
|
|||
public findReferences(resource:URI, position:EditorCommon.IPosition):winjs.TPromise<Modes.IReference[]> {
|
||||
|
||||
return this.languageService.join().then(() => {
|
||||
var model = this.resourceService.get(resource),
|
||||
let model = this.resourceService.get(resource),
|
||||
offset = model.getOffsetFromPosition(position),
|
||||
nodes = occurrences.findOccurrences(this.languageService.getStylesheet(resource), offset);
|
||||
|
||||
|
@ -285,35 +295,35 @@ export class CSSWorker extends AbstractModeWorker {
|
|||
public navigateValueSetFallback(resource:URI, range:EditorCommon.IRange, up:boolean):winjs.TPromise<Modes.IInplaceReplaceSupportResult> {
|
||||
return this.languageService.join().then(() => {
|
||||
|
||||
var model = this.resourceService.get(resource);
|
||||
var offset = model.getOffsetFromPosition({ lineNumber: range.startLineNumber, column: range.startColumn });
|
||||
var styleSheet = this.languageService.getStylesheet(resource);
|
||||
let model = this.resourceService.get(resource);
|
||||
let offset = model.getOffsetFromPosition({ lineNumber: range.startLineNumber, column: range.startColumn });
|
||||
let styleSheet = this.languageService.getStylesheet(resource);
|
||||
|
||||
var node = nodes.getNodeAtOffset(styleSheet, offset);
|
||||
let node = nodes.getNodeAtOffset(styleSheet, offset);
|
||||
if (!node) {
|
||||
return;
|
||||
}
|
||||
var declaration = nodes.getParentDeclaration(node);
|
||||
let declaration = nodes.getParentDeclaration(node);
|
||||
if (!declaration) {
|
||||
return;
|
||||
}
|
||||
|
||||
var entry: languageFacts.IEntry = languageFacts.getProperties()[declaration.getFullPropertyName()];
|
||||
let entry: languageFacts.IEntry = languageFacts.getProperties()[declaration.getFullPropertyName()];
|
||||
if (!entry || !entry.values) {
|
||||
return;
|
||||
}
|
||||
|
||||
var values = entry.values.filter(value => languageFacts.isCommonValue(value)).map(v => v.name);
|
||||
let values = entry.values.filter(value => languageFacts.isCommonValue(value)).map(v => v.name);
|
||||
|
||||
var isColor = (entry.restrictions.indexOf('color') >= 0);
|
||||
let isColor = (entry.restrictions.indexOf('color') >= 0);
|
||||
if (isColor) {
|
||||
values = values.concat(Object.getOwnPropertyNames(languageFacts.colors), Object.getOwnPropertyNames(languageFacts.colorKeywords));
|
||||
}
|
||||
|
||||
var text = node.getText();
|
||||
for (var i = 0, len = values.length; i < len; i++) {
|
||||
let text = node.getText();
|
||||
for (let i = 0, len = values.length; i < len; i++) {
|
||||
if (strings.equalsIgnoreCase(values[i], text)) {
|
||||
var nextIdx = i;
|
||||
let nextIdx = i;
|
||||
if(up) {
|
||||
nextIdx = (i + 1) % len;
|
||||
} else {
|
||||
|
@ -322,7 +332,7 @@ export class CSSWorker extends AbstractModeWorker {
|
|||
nextIdx = len - 1;
|
||||
}
|
||||
}
|
||||
var result:Modes.IInplaceReplaceSupportResult = {
|
||||
let result:Modes.IInplaceReplaceSupportResult = {
|
||||
value: values[nextIdx],
|
||||
range: this._range(node, model)
|
||||
};
|
||||
|
@ -331,7 +341,7 @@ export class CSSWorker extends AbstractModeWorker {
|
|||
}
|
||||
// if none matches, take the first one
|
||||
if (values.length > 0) {
|
||||
var result:Modes.IInplaceReplaceSupportResult = {
|
||||
let result:Modes.IInplaceReplaceSupportResult = {
|
||||
value: values[0],
|
||||
range: this._range(node, model)
|
||||
};
|
||||
|
@ -346,7 +356,7 @@ export class CSSWorker extends AbstractModeWorker {
|
|||
|
||||
return this.languageService.join().then(() => {
|
||||
|
||||
var model = this.resourceService.get(resource),
|
||||
let model = this.resourceService.get(resource),
|
||||
styleSheet = this.languageService.getStylesheet(resource),
|
||||
result:{range:EditorCommon.IRange; value:string; }[] = [];
|
||||
|
||||
|
@ -365,8 +375,8 @@ export class CSSWorker extends AbstractModeWorker {
|
|||
}
|
||||
|
||||
_range(node:{offset:number; length:number;}, model:EditorCommon.IMirrorModel, empty:boolean = false):EditorCommon.IRange {
|
||||
if(empty) {
|
||||
var position = model.getPositionFromOffset(node.offset);
|
||||
if (empty) {
|
||||
let position = model.getPositionFromOffset(node.offset);
|
||||
return {
|
||||
startLineNumber: position.lineNumber,
|
||||
startColumn: position.column,
|
||||
|
@ -380,10 +390,10 @@ export class CSSWorker extends AbstractModeWorker {
|
|||
|
||||
private getFixesForUnknownProperty(property: nodes.Property) : Modes.IQuickFix[] {
|
||||
|
||||
var propertyName = property.getName();
|
||||
var result: Modes.IQuickFix[] = [];
|
||||
for (var p in languageFacts.getProperties()) {
|
||||
var score = strings.difference(propertyName, p);
|
||||
let propertyName = property.getName();
|
||||
let result: Modes.IQuickFix[] = [];
|
||||
for (let p in languageFacts.getProperties()) {
|
||||
let score = strings.difference(propertyName, p);
|
||||
if (score >= propertyName.length / 2 /*score_lim*/) {
|
||||
result.push({
|
||||
command: {
|
||||
|
@ -411,15 +421,15 @@ export class CSSWorker extends AbstractModeWorker {
|
|||
|
||||
return this.languageService.join().then(() => {
|
||||
|
||||
var model = this.resourceService.get(resource),
|
||||
let model = this.resourceService.get(resource),
|
||||
offset = model.getOffsetFromPosition({ column: marker.startColumn, lineNumber: marker.startLineNumber }),
|
||||
stylesheet = this.languageService.getStylesheet(resource),
|
||||
nodepath = nodes.getNodePath(stylesheet, offset);
|
||||
|
||||
for (var i = nodepath.length - 1; i >= 0; i--) {
|
||||
var node = nodepath[i];
|
||||
for (let i = nodepath.length - 1; i >= 0; i--) {
|
||||
let node = nodepath[i];
|
||||
if (node instanceof nodes.Declaration) {
|
||||
var property = (<nodes.Declaration> node).getProperty();
|
||||
let property = (<nodes.Declaration> node).getProperty();
|
||||
if (property && property.offset === offset && property.length === marker.endColumn - marker.startColumn) {
|
||||
return this.getFixesForUnknownProperty(property);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue