Skip to content

Commit

Permalink
Preferences.
Browse files Browse the repository at this point in the history
  • Loading branch information
zefhemel committed Nov 24, 2011
1 parent a8e140a commit 2f93147
Show file tree
Hide file tree
Showing 7 changed files with 83 additions and 18 deletions.
32 changes: 17 additions & 15 deletions client/ext/jslanguage/narcissus_jshint.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,22 +35,24 @@ handler.analyze = function(doc) {
return markers;
}
finally {}
lint(value, {
undef: false,
onevar: false,
passfail: false
});
lint.errors.forEach(function(warning) {
if(!warning) return;
markers.push({
pos: {
sl: warning.line-1,
sc: warning.column-1
},
type: 'warning',
message: warning.reason
if(this.isFeatureEnabled("jshint")) {
lint(value, {
undef: false,
onevar: false,
passfail: false
});
});
lint.errors.forEach(function(warning) {
if(!warning) return;
markers.push({
pos: {
sl: warning.line-1,
sc: warning.column-1
},
type: 'warning',
message: warning.reason
});
});
}
return markers;
};

Expand Down
4 changes: 4 additions & 0 deletions client/ext/jslanguage/scope_analyzer.js
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,10 @@ handler.onCursorMovedNode = function(doc, fullAst, cursorPos, currentNode) {
enableRefactorings.push("renameVariable");
}
);

if(!this.isFeatureEnabled("instanceHighlight"))
return { enableRefactorings: enableRefactorings };

return {
markers: markers,
enableRefactorings: enableRefactorings
Expand Down
4 changes: 4 additions & 0 deletions client/ext/language/base_handler.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ module.exports = {

path: null,

isFeatureEnabled: function(name) {
return !disabledFeatures[name];
},

// OVERRIDABLE METHODS

/**
Expand Down
31 changes: 31 additions & 0 deletions client/ext/language/language.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ var skin = require("text!ext/language/skin.xml");
var css = require("text!ext/language/language.css");
var lang = require("ace/lib/lang");

var settings = require("text!ext/language/settings.xml");
var extSettings = require("ext/settings/settings");

module.exports = ext.register("ext/language/language", {
name : "Javascript Outline",
dev : "Ajax.org",
Expand All @@ -30,6 +33,7 @@ module.exports = ext.register("ext/language/language", {
markup : markup,
skin : skin,
worker : null,
enabled : true,

commands : {
"complete": {hint: "code complete"},
Expand Down Expand Up @@ -65,6 +69,12 @@ module.exports = ext.register("ext/language/language", {
marker.hook(this, worker);
complete.hook(this, worker);
refactor.hook(this, worker);

ide.addEventListener("init.ext/settings/settings", function (e) {
e.ext.addSection("language", _self.name, "language", function () {});
barSettings.insertMarkup(settings);
});

},

init : function() {
Expand All @@ -77,6 +87,9 @@ module.exports = ext.register("ext/language/language", {
var oldSelection = this.editor.selection;
this.setPath();

this.setJSHint();
this.setInstanceHighlight();

this.editor.on("changeSession", function(event) {
// Time out a litle, to let the page path be updated
setTimeout(function() {
Expand All @@ -102,6 +115,24 @@ module.exports = ext.register("ext/language/language", {
this.worker.call("switchFile", [currentPath, editors.currentEditor.ceEditor.syntax, this.editor.getSession().getValue()]);
},

setJSHint: function(e) {
if(extSettings.model.queryValue("language/@jshint") != "false")
this.worker.call("enableFeature", ["jshint"]);
else
this.worker.call("disableFeature", ["jshint"]);
this.setPath();
},

setInstanceHighlight: function(e) {
if(extSettings.model.queryValue("language/@instanceHighlight") != "false")
this.worker.call("enableFeature", ["instanceHighlight"]);
else
this.worker.call("disableFeature", ["instanceHighlight"]);
var cursorPos = this.editor.getCursorPosition();
cursorPos.force = true;
this.worker.emit("cursormove", {data: cursorPos});
},

/**
* Method attached to key combo for complete
*/
Expand Down
2 changes: 1 addition & 1 deletion client/ext/language/marker.js
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ module.exports = {
var range = event.data.range;
var isInserting = event.data.action.substring(0, 6) !== "remove";
var text = event.data.text;
var adaptingId = text && text.search(/[^a-zA-Z0-9]/) === -1;
var adaptingId = text && text.search(/[^a-zA-Z0-9\$_]/) === -1;
if (!isInserting) { // Removing some text
var markers = session.getMarkers(false);
// Run through markers
Expand Down
11 changes: 11 additions & 0 deletions client/ext/language/settings.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<a:application xmlns:a="http://ajax.org/2005/aml">
<div class="header">
<span></span><div>Language Analysis</div>
</div>
<a:checkbox class="underlined" label="Enable JSHint"
checked="{[language/@jshint] != '' ? [language/@jshint] : 'true'}"
value="[language/@jshint]" onclick="require('ext/language/language').setJSHint()"/>
<a:checkbox class="underlined" label="Variable instance highlighting"
checked="{[language/@instanceHighlight] != '' ? [language/@instanceHighlight] : 'true'}"
value="[language/@instanceHighlight]" onclick="require('ext/language/language').setInstanceHighlight()"/>
</a:application>
17 changes: 15 additions & 2 deletions client/ext/language/worker.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ var oop = require("ace/lib/oop");
var Mirror = require("ace/worker/mirror").Mirror;
var tree = require('treehugger/tree');


// Leaking on purpose
disabledFeatures = {};

var LanguageWorker = exports.LanguageWorker = function(sender) {
var _self = this;
this.handlers = [];
Expand All @@ -32,7 +36,7 @@ var LanguageWorker = exports.LanguageWorker = function(sender) {
_self.onCursorMove(event);
});

sender.on("change", function(e) {
sender.on("change", function() {
_self.scheduledUpdate = true;
});

Expand All @@ -44,7 +48,16 @@ var LanguageWorker = exports.LanguageWorker = function(sender) {
oop.inherits(LanguageWorker, Mirror);

(function() {


this.enableFeature = function(name) {
disabledFeatures[name] = false;
};

this.disableFeature = function(name) {
disabledFeatures[name] = true;
};

/**
* Registers a handler by loading its code and adding it the handler array
*/
Expand Down Expand Up @@ -120,7 +133,7 @@ oop.inherits(LanguageWorker, Mirror);
if(this.cachedAst) {
var ast = this.cachedAst;
var currentNode = ast.findNode({line: pos.row, col: pos.column});
if(currentNode !== this.lastCurrentNode) {
if(currentNode !== this.lastCurrentNode || pos.force) {
var aggregateActions = {markers: [], hint: null, enableRefactorings: []};
for(var i = 0; i < this.handlers.length; i++) {
var handler = this.handlers[i];
Expand Down

0 comments on commit 2f93147

Please sign in to comment.