ace/lib/ace/mode/powershell.js
Fabian Jakobs b063b96230 move pilot code back into Ace
Conflicts:

	.gitmodules
	Makefile.dryice.js
	build_support/editor_textarea.html
	demo/demo.js
	kitchen-sink.html
	lib/ace/edit_session_test.js
	lib/ace/mode/coffee.js
	lib/ace/mode/coffee_highlight_rules.js
	lib/ace/mode/css.js
	lib/ace/mode/javascript.js
	lib/ace/model/window.js
	lib/ace/mouse/default_handlers.js
	lib/ace/theme/clouds.js
	lib/ace/theme/clouds_midnight.js
	lib/ace/theme/cobalt.js
	lib/ace/theme/crimson_editor.js
	lib/ace/theme/dawn.js
	lib/ace/theme/eclipse.js
	lib/ace/theme/idle_fingers.js
	lib/ace/theme/kr_theme.js
	lib/ace/theme/merbivore.js
	lib/ace/theme/merbivore_soft.js
	lib/ace/theme/mono_industrial.js
	lib/ace/theme/monokai.js
	lib/ace/theme/pastel_on_dark.js
	lib/ace/theme/solarized_dark.js
	lib/ace/theme/solarized_light.js
	lib/ace/theme/textmate.js
	lib/ace/theme/twilight.js
	lib/ace/theme/vibrant_ink.js
	lib/ace/view/measure_text.js
	lib/ace/virtual_renderer.js
	package.json
	support/paths.js
2011-11-02 18:18:51 +01:00

56 lines
1.6 KiB
JavaScript

define(function(require, exports, module) {
var oop = require("ace/lib/oop");
var TextMode = require("ace/mode/text").Mode;
var Tokenizer = require("ace/tokenizer").Tokenizer;
var PowershellHighlightRules = require("ace/mode/powershell_highlight_rules").PowershellHighlightRules;
var MatchingBraceOutdent = require("ace/mode/matching_brace_outdent").MatchingBraceOutdent;
var CstyleBehaviour = require("ace/mode/behaviour/cstyle").CstyleBehaviour;
var Mode = function() {
this.$tokenizer = new Tokenizer(new PowershellHighlightRules().getRules());
this.$outdent = new MatchingBraceOutdent();
this.$behaviour = new CstyleBehaviour();
};
oop.inherits(Mode, TextMode);
(function() {
this.getNextLineIndent = function(state, line, tab) {
var indent = this.$getIndent(line);
var tokenizedLine = this.$tokenizer.getLineTokens(line, state);
var tokens = tokenizedLine.tokens;
var endState = tokenizedLine.state;
if (tokens.length && tokens[tokens.length-1].type == "comment") {
return indent;
}
if (state == "start") {
var match = line.match(/^.*[\{\(\[]\s*$/);
if (match) {
indent += tab;
}
}
return indent;
};
this.checkOutdent = function(state, line, input) {
return this.$outdent.checkOutdent(line, input);
};
this.autoOutdent = function(state, doc, row) {
this.$outdent.autoOutdent(doc, row);
};
this.createWorker = function(session) {
return null;
};
}).call(Mode.prototype);
exports.Mode = Mode;
});