This repository was archived by the owner on Jul 1, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmain.js
More file actions
86 lines (70 loc) · 2.28 KB
/
Copy pathmain.js
File metadata and controls
86 lines (70 loc) · 2.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
/*jslint no-extend-native: false */
/*global define, $, brackets */
define(function () {
"use strict";
if (!Array.prototype.includes) {
Array.prototype.includes = function(searchElement /*, fromIndex*/ ) {
'use strict';
var O = Object(this);
var len = parseInt(O.length) || 0;
if (len === 0) {
return false;
}
var n = parseInt(arguments[1]) || 0;
var k;
if (n >= 0) {
k = n;
} else {
k = len + n;
if (k < 0) { k = 0; }
}
var currentElement;
while (k < len) {
currentElement = O[k];
if (searchElement === currentElement
|| (searchElement !== searchElement && currentElement !== currentElement)) { // NaN !== NaN
return true;
}
k++;
}
return false;
};
}
var DocumentManger = brackets.getModule("document/DocumentManager"),
EditorManager = brackets.getModule("editor/EditorManager"),
PreferencesManager = brackets.getModule("preferences/PreferencesManager"),
prefs = PreferencesManager.getExtensionPrefs("brackets-brackets-matcher");
// Define the `enabled` preference, default is `true`.
prefs.definePreference("enabled", "boolean", "true");
function selectBetween(codeMirror, from, to, linesCount) {
var selStartCh = from.ch+1;
var selEndCh = to.ch;
if(linesCount === 1) {
selEndCh += 1;
}
codeMirror.doc.setSelection({ line: from.line, ch: selStartCh }, { line: to.line, ch: selEndCh });
}
$(DocumentManger).on("currentDocumentChange", function () {
var editor = EditorManager.getCurrentFullEditor();
if (!editor) {
return;
}
var codeMirror = editor._codeMirror;
// Listen for change events
codeMirror.on("change", function (codeMirror, change) {
var firstChar = change.text[0][0];
var lastChar = change.text[change.text.length-1][change.text[change.text.length-1].length-1];
var firstChars = ['"', "'", "`", "{", "[", "("];
var lastChars = ['"', "'", "`", "}", "]", ")"];
var index = firstChars.indexOf(firstChar);
if (!prefs.get("enabled") || change.origin === "paste" || change.origin === "undo" || change.origin === "redo"
|| index < 0 || lastChar !== lastChars[index]) {
return;
}
var from = change.from;
var to = change.to;
var linesCount = change.text.length;
selectBetween(codeMirror, from, to, linesCount);
});
});
});