| Index: third_party/WebKit/Source/devtools/front_end/cm/closebrackets.js
|
| diff --git a/third_party/WebKit/Source/devtools/front_end/cm/closebrackets.js b/third_party/WebKit/Source/devtools/front_end/cm/closebrackets.js
|
| index a8777b51b32361ff40b981013fc91416ca1489ec..01fdd96ce1a6ba31a1aa39000c27a5df13c23e32 100644
|
| --- a/third_party/WebKit/Source/devtools/front_end/cm/closebrackets.js
|
| +++ b/third_party/WebKit/Source/devtools/front_end/cm/closebrackets.js
|
| @@ -45,7 +45,7 @@
|
|
|
| function getConfig(cm) {
|
| var deflt = cm.state.closeBrackets;
|
| - if (!deflt) return null;
|
| + if (!deflt || deflt.override) return deflt;
|
| var mode = cm.getModeAt(cm.getCursor());
|
| return mode.closeBrackets || deflt;
|
| }
|
| @@ -116,7 +116,9 @@
|
| if (opening && !range.empty()) {
|
| curType = "surround";
|
| } else if ((identical || !opening) && next == ch) {
|
| - if (triples.indexOf(ch) >= 0 && cm.getRange(cur, Pos(cur.line, cur.ch + 3)) == ch + ch + ch)
|
| + if (identical && stringStartsAfter(cm, cur))
|
| + curType = "both";
|
| + else if (triples.indexOf(ch) >= 0 && cm.getRange(cur, Pos(cur.line, cur.ch + 3)) == ch + ch + ch)
|
| curType = "skipThree";
|
| else
|
| curType = "skip";
|
| @@ -183,7 +185,7 @@
|
| function enteringString(cm, pos, ch) {
|
| var line = cm.getLine(pos.line);
|
| var token = cm.getTokenAt(pos);
|
| - if (/\bstring2?\b/.test(token.type)) return false;
|
| + if (/\bstring2?\b/.test(token.type) || stringStartsAfter(cm, pos)) return false;
|
| var stream = new CodeMirror.StringStream(line.slice(0, pos.ch) + ch + line.slice(pos.ch), 4);
|
| stream.pos = stream.start = token.start;
|
| for (;;) {
|
| @@ -192,4 +194,9 @@
|
| stream.start = stream.pos;
|
| }
|
| }
|
| -});
|
| +
|
| + function stringStartsAfter(cm, pos) {
|
| + var token = cm.getTokenAt(Pos(pos.line, pos.ch + 1))
|
| + return /\bstring/.test(token.type) && token.start == pos.ch
|
| + }
|
| +});
|
|
|