From 9239223503150f6a7163d23aa91a2c8d0e3a0276 Mon Sep 17 00:00:00 2001 From: Sergey Melyukov Date: Fri, 20 Jan 2017 02:20:32 +0300 Subject: [PATCH] fixed highlighting of parse error fixed highlighting of unknown properties --- lib/index.js | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/lib/index.js b/lib/index.js index 2dc6d6a..d0a8bf3 100644 --- a/lib/index.js +++ b/lib/index.js @@ -7,6 +7,11 @@ export function activate() { require('atom-package-deps').install('csstree-validator'); } +const TYPE_WARNING = 'Warning'; +const TYPE_ERROR = 'Error'; +const SEVERITY_WARNING = 'warning'; +const SEVERITY_ERROR = 'error'; + function lint(editor, filePath) { let report = validateString(editor.getText()); @@ -14,16 +19,32 @@ function lint(editor, filePath) { .reduce((r, c) => r.concat(report[c]), []) .map(warning => { let range = new Range(); + let type = TYPE_WARNING; + let severity = SEVERITY_WARNING; + + range.start = new Point(warning.line - 1, warning.column - 1); + + if (warning.loc) { + let endLine = warning.loc.end.line - 1; + let endColumn = warning.loc.end.column - 1; - range.start = new Point(warning.loc.start.line - 1, warning.loc.start.column - 1); - range.end = new Point(warning.loc.end.line - 1, warning.loc.end.column - 1); + if (!warning.message.indexOf('Unknown property')) { + range.end = new Point(range.start.row, range.start.column + warning.property.length); + } else { + range.end = new Point(endLine, endColumn); + } + } else { + type = TYPE_ERROR; + severity = SEVERITY_ERROR; + range.end = new Point(range.start.row, range.start.column + 1); + } return { - type: 'Warning', - severity: 'warning', - text: warning.message, + type, + severity, range, - filePath + filePath, + text: warning.message } }); }