Skip to content

Commit 9b09e12

Browse files
author
ldoblies
committed
Added application of missing/unnecessary semicolon quickfixes
1 parent f873bee commit 9b09e12

File tree

2 files changed

+32
-16
lines changed

2 files changed

+32
-16
lines changed

plugins-client/ext.jslanguage/JSResolver.js

Lines changed: 31 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ define(function(require, exports, module) {
33

44
var markerResolution = require('ext/language/MarkerResolution').MarkerResolution;
55

6-
var JSResolver = function(ast){
6+
var JSResolver = function(value, ast){
77
this.addResolutions = function(markers){
88
var _self = this;
99
markers.forEach(function(curMarker) {
@@ -19,29 +19,45 @@ define(function(require, exports, module) {
1919
}
2020
}
2121
return [];
22-
};
22+
};
2323

2424
this.getType = function(marker){
2525
var msg = marker.message;
2626
if (msg.indexOf("Missing semicolon") !== -1){
2727
return "missingSemicolon";
28-
}else if (msg.indexOf("Unnecessary semicolon") !== -1){
28+
} else if (msg.indexOf("Unnecessary semicolon") !== -1){
2929
return "unnecessarySemicolon";
3030
}
31-
return undefined;
32-
};
33-
34-
this.unnecessarySemicolon = function(marker){
35-
var label = "Remove semicolon";var image = "";
36-
var preview = "<b>Remove unnecessary semicolon</b>";
37-
38-
var appliedContent = "Not implemented";
39-
40-
return [markerResolution(label,image,preview,appliedContent)];
41-
};
31+
};
4232

4333
this.missingSemicolon = function(marker){
44-
return [markerResolution("Not implemented", "", "Not implemented", "Not implemented")];
34+
console.log(marker.pos);
35+
var label = "Add semicolon";
36+
var image = "";
37+
38+
var lines = value.split("\n");
39+
var before = lines[marker.pos.sl].substring(0, marker.pos.sc);
40+
var after = lines[marker.pos.sl].substring(marker.pos.sc);
41+
lines[marker.pos.sl] = before + "; " + after;
42+
var preview = "<b>Add semicolon</b><p>" + before + "<b>; </b>" + after + "</p>";
43+
var appliedContent = lines.join("\n");
44+
45+
return [markerResolution(label, image, preview, appliedContent)];
46+
};
47+
48+
this.unnecessarySemicolon = function(marker){
49+
console.log(marker.pos);
50+
var label = "Remove semicolon";
51+
var image = "";
52+
53+
var lines = value.split("\n");
54+
var before = lines[marker.pos.sl].substring(0, marker.pos.sc);
55+
var after = lines[marker.pos.sl].substring(marker.pos.sc + 1);
56+
lines[marker.pos.sl] = before + after;
57+
var preview = "<b>Remove semicolon</b><p>" + before + "<del>;</del>" + after + "</p>";
58+
var appliedContent = lines.join("\n");
59+
60+
return [markerResolution(label, image, preview, appliedContent)];
4561
};
4662

4763
};

plugins-client/ext.jslanguage/jshint.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ handler.analyzeSync = function(value, ast) {
8585
});
8686
});
8787

88-
var resolver = new JSResolver(ast);
88+
var resolver = new JSResolver(value, ast);
8989
resolver.addResolutions(markers);
9090

9191
return markers;

0 commit comments

Comments
 (0)