| 3849 | "use strict"; |
| 3850 | |
| 3851 | function FoldHandler(editor) { |
| 3852 | |
| 3853 | editor.on("click", function(e) { |
| 3854 | var position = e.getDocumentPosition(); |
| 3855 | var session = editor.session; |
| 3856 | var fold = session.getFoldAt(position.row, position.column, 1); |
| 3857 | if (fold) { |
| 3858 | if (e.getAccelKey()) |
| 3859 | session.removeFold(fold); |
| 3860 | else |
| 3861 | session.expandFold(fold); |
| 3862 | |
| 3863 | e.stop(); |
| 3864 | } |
| 3865 | }); |
| 3866 | |
| 3867 | editor.on("gutterclick", function(e) { |
| 3868 | var gutterRegion = editor.renderer.$gutterLayer.getRegion(e); |
| 3869 | |
| 3870 | if (gutterRegion == "foldWidgets") { |
| 3871 | var row = e.getDocumentPosition().row; |
| 3872 | var session = editor.session; |
| 3873 | if (session.foldWidgets && session.foldWidgets[row]) |
| 3874 | editor.session.onFoldWidgetClick(row, e); |
| 3875 | if (!editor.isFocused()) |
| 3876 | editor.focus(); |
| 3877 | e.stop(); |
| 3878 | } |
| 3879 | }); |
| 3880 | |
| 3881 | editor.on("gutterdblclick", function(e) { |
| 3882 | var gutterRegion = editor.renderer.$gutterLayer.getRegion(e); |
| 3883 | |
| 3884 | if (gutterRegion == "foldWidgets") { |
| 3885 | var row = e.getDocumentPosition().row; |
| 3886 | var session = editor.session; |
| 3887 | var data = session.getParentFoldRangeData(row, true); |
| 3888 | var range = data.range || data.firstRange; |
| 3889 | |
| 3890 | if (range) { |
| 3891 | row = range.start.row; |
| 3892 | var fold = session.getFoldAt(row, session.getLine(row).length, 1); |
| 3893 | |
| 3894 | if (fold) { |
| 3895 | session.removeFold(fold); |
| 3896 | } else { |
| 3897 | session.addFold("...", range); |
| 3898 | editor.renderer.scrollCursorIntoView({row: range.start.row, column: 0}); |
| 3899 | } |
| 3900 | } |
| 3901 | e.stop(); |
| 3902 | } |
| 3903 | }); |
| 3904 | } |
| 3905 | |
| 3906 | exports.FoldHandler = FoldHandler; |
| 3907 | |