From 5744a3c6e3fc0c15b4fb22803db339e690f38f7f Mon Sep 17 00:00:00 2001 From: nightwing Date: Fri, 1 Aug 2014 20:53:08 +0400 Subject: [PATCH 1/6] fix bracket matching in vala mode --- lib/ace/mode/vala_highlight_rules.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/ace/mode/vala_highlight_rules.js b/lib/ace/mode/vala_highlight_rules.js index f199426d..b4a96a3d 100644 --- a/lib/ace/mode/vala_highlight_rules.js +++ b/lib/ace/mode/vala_highlight_rules.js @@ -136,7 +136,7 @@ var ValaHighlightRules = function() { [ { token: 'meta.class.vala', regex: '(?=\\w?[\\w\\s]*(?:class|(?:@)?interface|enum|struct|namespace)\\s+\\w+)', push: - [ { token: 'punctuation.section.class.end.vala', + [ { token: 'paren.vala', regex: '}', next: 'pop' }, { include: '#storage-modifiers' }, @@ -166,10 +166,10 @@ var ValaHighlightRules = function() { { include: '#object-types-inherited' }, { include: '#comments' }, { defaultToken: 'meta.definition.class.implemented.interfaces.vala' } ] }, - { token: 'meta.class.body.vala', + { token: 'paren.vala', regex: '{', push: - [ { token: 'meta.class.body.vala', regex: '(?=})', next: 'pop' }, + [ { token: 'paren.vala', regex: '(?=})', next: 'pop' }, { include: '#class-body' }, { defaultToken: 'meta.class.body.vala' } ] }, { defaultToken: 'meta.class.vala' } ], @@ -266,7 +266,7 @@ var ValaHighlightRules = function() { [ { token: 'meta.method.vala', regex: '(?!new)(?=\\w.*\\s+)(?=[^=]+\\()', push: - [ { token: 'meta.method.vala', regex: '}|(?=;)', next: 'pop' }, + [ { token: 'paren.vala', regex: '}|(?=;)', next: 'pop' }, { include: '#storage-modifiers' }, { token: [ 'entity.name.function.vala', 'meta.method.identifier.vala' ], regex: '([\\~\\w\\.]+)(\\s*\\()', @@ -285,10 +285,10 @@ var ValaHighlightRules = function() { { include: '#all-types' }, { defaultToken: 'meta.method.return-type.vala' } ] }, { include: '#throws' }, - { token: 'meta.method.body.vala', + { token: 'paren.vala', regex: '{', push: - [ { token: 'meta.method.body.vala', regex: '(?=})', next: 'pop' }, + [ { token: 'paren.vala', regex: '(?=})', next: 'pop' }, { include: '#code' }, { defaultToken: 'meta.method.body.vala' } ] }, { defaultToken: 'meta.method.vala' } ] } ], From 0eff326d6213c2ace8d5f4a86323e3fea5cb59e9 Mon Sep 17 00:00:00 2001 From: nightwing Date: Fri, 1 Aug 2014 21:18:53 +0400 Subject: [PATCH 2/6] tweak modes --- lib/ace/ext/modelist.js | 4 ++-- lib/ace/mode/javascript/jshint.js | 2 +- lib/ace/mode/javascript_highlight_rules.js | 2 +- lib/ace/mode/php_highlight_rules.js | 15 +++++++-------- lib/ace/mode/snippets.js | 1 + 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/lib/ace/ext/modelist.js b/lib/ace/ext/modelist.js index 53b78f00..6e6cdc30 100644 --- a/lib/ace/ext/modelist.js +++ b/lib/ace/ext/modelist.js @@ -147,7 +147,7 @@ var supportedModes = { Twig: ["twig"], Typescript: ["ts|typescript|str"], Vala: ["vala"], - VBScript: ["vbs"], + VBScript: ["vbs|vb"], Velocity: ["vm"], Verilog: ["v|vh|sv|svh"], XML: ["xml|rdf|rss|wsdl|xslt|atom|mathml|mml|xul|xbl"], @@ -159,7 +159,7 @@ var nameOverrides = { ObjectiveC: "Objective-C", CSharp: "C#", golang: "Go", - C_Cpp: "C/C++", + C_Cpp: "C and C++", coffee: "CoffeeScript", HTML_Ruby: "HTML (Ruby)", FTL: "FreeMarker" diff --git a/lib/ace/mode/javascript/jshint.js b/lib/ace/mode/javascript/jshint.js index 12590467..7d8352a8 100644 --- a/lib/ace/mode/javascript/jshint.js +++ b/lib/ace/mode/javascript/jshint.js @@ -1979,7 +1979,7 @@ var JSHINT = (function () { function doOption() { var nt = state.tokens.next; - var body = nt.body.match(/(-\s+)?[^\s,:]+(?:\s*:\s*(-\s+)?[^\s,]+)?/g); + var body = nt.body.match(/(-\s+)?[^\s,:]+(?:\s*:\s*(-\s+)?[^\s,]+)?/g) || []; var predef = {}; if (nt.type === "globals") { diff --git a/lib/ace/mode/javascript_highlight_rules.js b/lib/ace/mode/javascript_highlight_rules.js index cd427b06..b5393b13 100644 --- a/lib/ace/mode/javascript_highlight_rules.js +++ b/lib/ace/mode/javascript_highlight_rules.js @@ -272,7 +272,7 @@ var JavaScriptHighlightRules = function() { ], "regex_character_class": [ { - token: "regexp.keyword.operator", + token: "regexp.charclass.keyword.operator", regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" }, { token: "constant.language.escape", diff --git a/lib/ace/mode/php_highlight_rules.js b/lib/ace/mode/php_highlight_rules.js index ca591d1b..b60e97bc 100644 --- a/lib/ace/mode/php_highlight_rules.js +++ b/lib/ace/mode/php_highlight_rules.js @@ -1005,7 +1005,7 @@ var PhpLangHighlightRules = function() { return "string"; stack.shift(); stack.shift(); - return "markup.list" + return "markup.list"; }, regex : "^\\w+(?=;?$)", next: "start" @@ -1016,12 +1016,11 @@ var PhpLangHighlightRules = function() { ], "comment" : [ { - token : "comment", // closing comment - regex : ".*?\\*\\/", + token : "comment", + regex : "\\*\\/", next : "start" }, { - token : "comment", // comment spanning whole line - regex : ".+" + defaultToken : "comment" } ], "qqstring" : [ @@ -1029,10 +1028,10 @@ var PhpLangHighlightRules = function() { token : "constant.language.escape", regex : '\\\\(?:[nrtvef\\\\"$]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2})' }, { - token : "constant.language.escape", - regex : /\$[\w]+(?:\[[\w\]+]|=>\w+)?/ + token : "variable", + regex : /\$[\w]+(?:\[[\w\]+]|[=\-]>\w+)?/ }, { - token : "constant.language.escape", + token : "variable", regex : /\$\{[^"\}]+\}?/ // this is wrong but ok for now }, {token : "string", regex : '"', next : "start"}, diff --git a/lib/ace/mode/snippets.js b/lib/ace/mode/snippets.js index 638e9393..02652515 100644 --- a/lib/ace/mode/snippets.js +++ b/lib/ace/mode/snippets.js @@ -104,6 +104,7 @@ oop.inherits(Mode, TextMode); (function() { this.$indentWithTabs = true; + this.lineCommentStart = "#"; this.$id = "ace/mode/snippets"; }).call(Mode.prototype); exports.Mode = Mode; From 518166324bbc9b00435c23e58a6fd75485c12b92 Mon Sep 17 00:00:00 2001 From: nightwing Date: Fri, 1 Aug 2014 22:21:40 +0400 Subject: [PATCH 3/6] add constexpr keyword to c++ --- lib/ace/mode/c_cpp_highlight_rules.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/ace/mode/c_cpp_highlight_rules.js b/lib/ace/mode/c_cpp_highlight_rules.js index 00fdac84..008da9d5 100644 --- a/lib/ace/mode/c_cpp_highlight_rules.js +++ b/lib/ace/mode/c_cpp_highlight_rules.js @@ -22,8 +22,9 @@ var c_cppHighlightRules = function() { ); var storageModifiers = ( - "const|extern|register|restrict|static|volatile|inline|private:|" + - "protected:|public:|friend|explicit|virtual|export|mutable|typename" + "const|extern|register|restrict|static|volatile|inline|private|" + + "protected|public|friend|explicit|virtual|export|mutable|typename|" + + "constexpr|new|delete" ); var keywordOperators = ( From d120d050fbdbec4cca738b83df53582b111fa83b Mon Sep 17 00:00:00 2001 From: nightwing Date: Fri, 1 Aug 2014 22:28:30 +0400 Subject: [PATCH 4/6] update test --- lib/ace/mode/_test/tokens_javascript.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/ace/mode/_test/tokens_javascript.json b/lib/ace/mode/_test/tokens_javascript.json index f527aa98..42e9bf5e 100644 --- a/lib/ace/mode/_test/tokens_javascript.json +++ b/lib/ace/mode/_test/tokens_javascript.json @@ -288,9 +288,9 @@ ["string.regexp.charachterclass","r"], ["constant.language.escape","-"], ["string.regexp.charachterclass","o"], - ["regexp.keyword.operator","\\f\\f"], + ["regexp.charclass.keyword.operator","\\f\\f"], ["string.regexp.charachterclass","["], - ["regexp.keyword.operator","\\f"], + ["regexp.charclass.keyword.operator","\\f"], ["constant.language.escape","]?"], ["string.regexp","r"], ["invalid","{7}+"], From b69f7450aa4506b5da85ca972941046bad22197b Mon Sep 17 00:00:00 2001 From: nightwing Date: Sat, 2 Aug 2014 01:02:52 +0400 Subject: [PATCH 5/6] fix autoclosing of p tag --- lib/ace/mode/folding/xml.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/ace/mode/folding/xml.js b/lib/ace/mode/folding/xml.js index 93c40572..68d13423 100644 --- a/lib/ace/mode/folding/xml.js +++ b/lib/ace/mode/folding/xml.js @@ -39,8 +39,12 @@ var TokenIterator = require("../../token_iterator").TokenIterator; var FoldMode = exports.FoldMode = function(voidElements, optionalEndTags) { BaseFoldMode.call(this); - // TODO folding support for optional end tags - this.voidElements = oop.mixin(voidElements || {}, optionalEndTags || {}); + this.voidElements = voidElements || {}; + this.optionalEndTags = {}; + oop.mixin({}, this.voidElements); + if (optionalEndTags) + oop.mixin(this.optionalEndTags, optionalEndTags); + }; oop.inherits(FoldMode, BaseFoldMode); @@ -189,10 +193,10 @@ function is(token, type) { if (!tag || top.tagName == tag.tagName) { return stack.pop(); } - else if (this.voidElements.hasOwnProperty(tag.tagName)) { + else if (this.optionalEndTags.hasOwnProperty(tag.tagName)) { return; } - else if (this.voidElements.hasOwnProperty(top.tagName)) { + else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { stack.pop(); continue; } else { From 0842d27710f6eec06af175a1319ac61b726f4b5f Mon Sep 17 00:00:00 2001 From: nightwing Date: Mon, 4 Aug 2014 18:27:06 +0400 Subject: [PATCH 6/6] fix failing test allow folding

tags --- lib/ace/mode/folding/html_test.js | 4 ++-- lib/ace/mode/folding/xml.js | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/ace/mode/folding/html_test.js b/lib/ace/mode/folding/html_test.js index 3e42cfe0..2698d936 100644 --- a/lib/ace/mode/folding/html_test.js +++ b/lib/ace/mode/folding/html_test.js @@ -145,9 +145,9 @@ module.exports = { session.setFoldStyle("markbeginend"); assert.equal(session.getFoldWidget(0), "start"); - assert.equal(session.getFoldWidget(1), ""); + assert.equal(session.getFoldWidget(1), "start"); assert.equal(session.getFoldWidget(2), ""); - assert.equal(session.getFoldWidget(3), ""); + assert.equal(session.getFoldWidget(3), "start"); assert.equal(session.getFoldWidget(4), ""); assert.equal(session.getFoldWidget(5), "end"); diff --git a/lib/ace/mode/folding/xml.js b/lib/ace/mode/folding/xml.js index 68d13423..3a353eba 100644 --- a/lib/ace/mode/folding/xml.js +++ b/lib/ace/mode/folding/xml.js @@ -40,8 +40,7 @@ var TokenIterator = require("../../token_iterator").TokenIterator; var FoldMode = exports.FoldMode = function(voidElements, optionalEndTags) { BaseFoldMode.call(this); this.voidElements = voidElements || {}; - this.optionalEndTags = {}; - oop.mixin({}, this.voidElements); + this.optionalEndTags = oop.mixin({}, this.voidElements); if (optionalEndTags) oop.mixin(this.optionalEndTags, optionalEndTags);