Skip to content
This repository was archived by the owner on Sep 6, 2021. It is now read-only.

Commit 812111e

Browse files
authoredAug 28, 2016
Revert "Ensures fold-gutter is always inserted after the line-number gutter (if it exists)"
1 parent 5727863 commit 812111e

File tree

4 files changed

+18
-87
lines changed

4 files changed

+18
-87
lines changed
 

‎.brackets.json

-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
"clearTimeout",
2121

2222
"ArrayBuffer",
23-
"MutationObserver",
2423
"XMLHttpRequest",
2524
"Uint32Array",
2625
"WebSocket"

‎.eslintrc.json

-1
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@
6161
"clearTimeout": false,
6262

6363
"ArrayBuffer": false,
64-
"MutationObserver": false,
6564
"XMLHttpRequest": false,
6665
"Uint32Array": false,
6766
"WebSocket": false

‎src/extensions/default/CodeFolding/main.js

+18-67
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
* @author Patrick Oladimeji
2626
* @date 10/24/13 9:35:26 AM
2727
*/
28+
2829
define(function (require, exports, module) {
2930
"use strict";
3031

@@ -52,12 +53,7 @@ define(function (require, exports, module) {
5253
collapseAllKey = "Alt-1",
5354
expandAllKey = "Shift-Alt-1",
5455
collapseAllKeyMac = "Cmd-1",
55-
expandAllKeyMac = "Cmd-Shift-1",
56-
SAVE_FOLD_STATES = "saveFoldStates",
57-
HIDE_UNTIL_MOUSE_OVER = "hideUntilMouseover",
58-
MAKE_SELECTION_FOLDABLE = "makeSelectionFoldable",
59-
ALWAYS_USE_INDENT_FOLD = "alwaysUseIndentFold",
60-
LINE_NUMBER_GUTTER = "CodeMirror-linenumbers";
56+
expandAllKeyMac = "Cmd-Shift-1";
6157

6258
ExtensionUtils.loadStyleSheet(module, "main.less");
6359

@@ -74,10 +70,10 @@ define(function (require, exports, module) {
7470
indentFold = require("foldhelpers/indentFold"),
7571
selectionFold = require("foldhelpers/foldSelected");
7672

73+
7774
/** Set to true when init() has run; set back to false after deinit() has run */
78-
var _isInitialized = false,
79-
gutterObservers = {};
80-
75+
var _isInitialized = false;
76+
8177
/**
8278
* Restores the linefolds in the editor using values fetched from the preference store
8379
* Checks the document to ensure that changes have not been made (e.g., in a different editor)
@@ -116,7 +112,7 @@ define(function (require, exports, module) {
116112
});
117113
}
118114

119-
var saveFolds = prefs.getSetting(SAVE_FOLD_STATES);
115+
var saveFolds = prefs.getSetting("saveFoldStates");
120116
if (!editor || !saveFolds) {
121117
return;
122118
}
@@ -151,7 +147,7 @@ define(function (require, exports, module) {
151147
* @param {Editor} editor the editor whose line folds should be saved
152148
*/
153149
function saveLineFolds(editor) {
154-
var saveFolds = prefs.getSetting(SAVE_FOLD_STATES);
150+
var saveFolds = prefs.getSetting("saveFoldStates");
155151
if (!editor || !saveFolds) {
156152
return;
157153
}
@@ -267,38 +263,34 @@ define(function (require, exports, module) {
267263
*/
268264
function createGutter(editor) {
269265
var cm = editor._codeMirror;
270-
var rootElement = editor.getRootElement();
271266
var path = editor.document.file.fullPath, _lineFolds = prefs.getFolds(path);
272267
_lineFolds = _lineFolds || {};
273268
cm._lineFolds = _lineFolds;
274269
var gutters = cm.getOption("gutters").slice(0);
275270

276271
// Reuse any existing fold gutter
277272
if (gutters.indexOf(GUTTER_NAME) < 0) {
278-
var lineNumberIndex = gutters.indexOf(LINE_NUMBER_GUTTER);
279-
if (lineNumberIndex < 0) {
280-
$(rootElement).addClass("linenumber-disabled");
281-
}
282-
$(rootElement).addClass("folding-enabled");
283-
gutters.splice(lineNumberIndex + 1, 0, GUTTER_NAME);
273+
var lnIndex = gutters.indexOf("CodeMirror-linenumbers");
274+
$(editor.getRootElement()).addClass("folding-enabled");
275+
gutters.splice(lnIndex + 1, 0, GUTTER_NAME);
284276
cm.setOption("gutters", gutters);
285277
cm.refresh(); // force recomputing gutter width - .folding-enabled class affects linenumbers gutter which has existing cached width
286278
}
287279
cm.setOption("foldGutter", {onGutterClick: onGutterClick});
288280

289281
$(cm.getGutterElement()).on({
290282
mouseenter: function () {
291-
if (prefs.getSetting(HIDE_UNTIL_MOUSE_OVER)) {
283+
if (prefs.getSetting("hideUntilMouseover")) {
292284
foldGutter.updateInViewport(cm);
293285
} else {
294-
$(rootElement).addClass("over-gutter");
286+
$(editor.getRootElement()).addClass("over-gutter");
295287
}
296288
},
297289
mouseleave: function () {
298-
if (prefs.getSetting(HIDE_UNTIL_MOUSE_OVER)) {
290+
if (prefs.getSetting("hideUntilMouseover")) {
299291
foldGutter.clearGutter(cm);
300292
} else {
301-
$(rootElement).removeClass("over-gutter");
293+
$(editor.getRootElement()).removeClass("over-gutter");
302294
}
303295
}
304296
});
@@ -312,12 +304,10 @@ define(function (require, exports, module) {
312304
var cm = editor._codeMirror;
313305
var gutters = cm.getOption("gutters").slice(0);
314306
var index = gutters.indexOf(GUTTER_NAME);
315-
var rootElement = editor.getRootElement();
316-
$(rootElement).removeClass("folding-enabled");
307+
$(editor.getRootElement()).removeClass("folding-enabled");
317308
gutters.splice(index, 1);
318309
cm.setOption("gutters", gutters);
319-
// Force recomputing gutter width - .folding-enabled class affected linenumbers gutter
320-
cm.refresh();
310+
cm.refresh(); // force recomputing gutter width - .folding-enabled class affected linenumbers gutter
321311
CodeMirror.defineOption("foldGutter", false, null);
322312
}
323313

@@ -326,39 +316,6 @@ define(function (require, exports, module) {
326316
if (editor._codeMirror.getOption("gutters").indexOf(GUTTER_NAME) === -1) {
327317
createGutter(editor);
328318
restoreLineFolds(editor);
329-
// Watch mutations on code mirror gutters and ensure line numbers are added before fold gutter.
330-
var config = {childList: true};
331-
var gutters,
332-
lineNumberIndex,
333-
foldGutterIndex,
334-
cm = editor._codeMirror,
335-
rootElement = editor.getRootElement(),
336-
guttersContainer = $(".CodeMirror-gutters", rootElement),
337-
observer = new MutationObserver(function (mutations) {
338-
observer.disconnect();
339-
// Ensure fold-gutter appears after line numbers.
340-
gutters = cm.getOption("gutters").slice(0);
341-
lineNumberIndex = gutters.indexOf(LINE_NUMBER_GUTTER);
342-
foldGutterIndex = gutters.indexOf(GUTTER_NAME);
343-
if (lineNumberIndex > -1 && foldGutterIndex < lineNumberIndex) {
344-
gutters.splice(foldGutterIndex, 1);
345-
lineNumberIndex = gutters.indexOf(LINE_NUMBER_GUTTER);
346-
gutters.splice(lineNumberIndex + 1, 0, GUTTER_NAME);
347-
}
348-
if (lineNumberIndex < 0) {
349-
$(rootElement).addClass("linenumber-disabled");
350-
} else {
351-
$(rootElement).removeClass("linenumber-disabled");
352-
}
353-
$(rootElement).addClass("folding-enabled");
354-
cm.setOption("gutters", gutters);
355-
cm.refresh();
356-
createGutter(editor);
357-
// Reconnect the observer.
358-
observer.observe(guttersContainer[0], config);
359-
});
360-
observer.observe(guttersContainer[0], config);
361-
gutterObservers[editor.document.file.fullPath] = observer;
362319
}
363320
}
364321

@@ -414,12 +371,6 @@ define(function (require, exports, module) {
414371
Editor.forEveryEditor(function (editor) {
415372
CodeMirror.commands.unfoldAll(editor._codeMirror);
416373
removeGutter(editor);
417-
//disconnect any mutation observers on the gutter
418-
var gutterObserver = gutterObservers[editor.document.file.fullPath];
419-
if (gutterObserver) {
420-
gutterObserver.disconnect();
421-
delete gutterObservers[editor.document.file.fullPath];
422-
}
423374
});
424375
}
425376

@@ -436,10 +387,10 @@ define(function (require, exports, module) {
436387
// don't, we register helpers explicitly here. We also register a global helper for generic indent-based
437388
// folding, which cuts across all languages if enabled via preference.
438389
CodeMirror.registerGlobalHelper("fold", "selectionFold", function (mode, cm) {
439-
return prefs.getSetting(MAKE_SELECTION_FOLDABLE);
390+
return prefs.getSetting("makeSelectionsFoldable");
440391
}, selectionFold);
441392
CodeMirror.registerGlobalHelper("fold", "indent", function (mode, cm) {
442-
return prefs.getSetting(ALWAYS_USE_INDENT_FOLD);
393+
return prefs.getSetting("alwaysUseIndentFold");
443394
}, indentFold);
444395

445396
CodeMirror.registerHelper("fold", "django", CodeMirror.helpers.fold.brace);

‎src/extensions/default/CodeFolding/main.less

-18
Original file line numberDiff line numberDiff line change
@@ -49,24 +49,6 @@
4949
padding-right: 5px;
5050
}
5151

52-
// If line numbers are not shown and codefolding is enabled we remove the left padding.
53-
// We add the same padding below to the fold gutter
54-
.show-line-padding {
55-
.folding-enabled.linenumber-disabled pre {
56-
padding-left: 0;
57-
}
58-
}
59-
60-
.CodeMirror.linenumber-disabled {
61-
// When there are no line numbers, .show-line-padding class adds 15px left padding to line numbers.
62-
// Here we compensate for that gap by adding the same padding to the folding gutter.
63-
.CodeMirror-foldgutter,
64-
.CodeMirror-foldgutter-open,
65-
.CodeMirror-foldgutter-folded,
66-
.CodeMirror-foldgutter-blank {
67-
padding-left: 15px;
68-
}
69-
}
7052

7153
.CodeMirror-foldmarker {
7254
// Re-enabling the pointer events for the fold marker. As pointer events are disabled for "CodeMirror-lines"

0 commit comments

Comments
 (0)
This repository has been archived.