Spaces:
Paused
Paused
| ; | |
| var oop = require("../lib/oop"); | |
| var TextMode = require("./text").Mode; | |
| var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; | |
| var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; | |
| var WorkerClient = require("../worker/worker_client").WorkerClient; | |
| var JavaScriptBehaviour = require("./behaviour/javascript").JavaScriptBehaviour; | |
| var JavaScriptFoldMode = require("./folding/javascript").FoldMode; | |
| var Mode = function() { | |
| this.HighlightRules = JavaScriptHighlightRules; | |
| this.$outdent = new MatchingBraceOutdent(); | |
| this.$behaviour = new JavaScriptBehaviour(); | |
| this.foldingRules = new JavaScriptFoldMode(); | |
| }; | |
| oop.inherits(Mode, TextMode); | |
| (function() { | |
| this.lineCommentStart = "//"; | |
| this.blockComment = {start: "/*", end: "*/"}; | |
| this.$quotes = {'"': '"', "'": "'", "`": "`"}; | |
| this.$pairQuotesAfter = { | |
| "`": /\w/ | |
| }; | |
| this.getNextLineIndent = function(state, line, tab) { | |
| var indent = this.$getIndent(line); | |
| var tokenizedLine = this.getTokenizer().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" || state == "no_regex") { | |
| var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); | |
| if (match) { | |
| indent += tab; | |
| } | |
| } else if (state == "doc-start") { | |
| if (endState == "start" || endState == "no_regex") { | |
| return ""; | |
| } | |
| } | |
| 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) { | |
| var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); | |
| worker.attachToDocument(session.getDocument()); | |
| worker.on("annotate", function(results) { | |
| session.setAnnotations(results.data); | |
| }); | |
| worker.on("terminate", function() { | |
| session.clearAnnotations(); | |
| }); | |
| return worker; | |
| }; | |
| this.$id = "ace/mode/javascript"; | |
| this.snippetFileId = "ace/snippets/javascript"; | |
| }).call(Mode.prototype); | |
| exports.Mode = Mode; |