annotate .cms/lib/codemirror/demo/folding.html @ 0:78edf6b517a0 draft

24.10
author Coffee CMS <info@coffee-cms.ru>
date Fri, 11 Oct 2024 22:40:23 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1 <!doctype html>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
2
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
3 <head>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
4 <title>CodeMirror: Code Folding Demo</title>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
5 <meta charset="utf-8"/>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
6 <link rel=stylesheet href="../doc/docs.css">
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
7
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
8 <style>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
9 .some-css {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
10 color: red;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
11 line-height: 2;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
12 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
13 </style>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
14
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
15 <link rel="stylesheet" href="../lib/codemirror.css">
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
16 <link rel="stylesheet" href="../addon/fold/foldgutter.css" />
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
17 <script src="../lib/codemirror.js"></script>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
18 <script src="../addon/fold/foldcode.js"></script>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
19 <script src="../addon/fold/foldgutter.js"></script>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
20 <script src="../addon/fold/brace-fold.js"></script>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
21 <script src="../addon/fold/xml-fold.js"></script>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
22 <script src="../addon/fold/indent-fold.js"></script>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
23 <script src="../addon/fold/markdown-fold.js"></script>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
24 <script src="../addon/fold/comment-fold.js"></script>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
25 <script src="../mode/javascript/javascript.js"></script>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
26 <script src="../mode/xml/xml.js"></script>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
27 <script src="../mode/css/css.js"></script>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
28 <script src="../mode/htmlmixed/htmlmixed.js"></script>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
29 <script src="../mode/python/python.js"></script>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
30 <script src="../mode/markdown/markdown.js"></script>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
31 <style>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
32 .CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
33 </style>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
34 </head>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
35
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
36 <body>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
37 <div id=nav>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
38 <a href="https://codemirror.net/5"><h1>CodeMirror</h1><img id=logo src="../doc/logo.png"></a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
39
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
40 <ul>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
41 <li><a href="../index.html">Home</a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
42 <li><a href="../doc/manual.html">Manual</a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
43 <li><a href="https://github.com/codemirror/codemirror5">Code</a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
44 </ul>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
45 <ul>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
46 <li><a class=active href="#">Code Folding</a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
47 </ul>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
48 </div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
49
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
50 <article>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
51 <h2>Code Folding Demo</h2>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
52 <form>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
53 <div style="max-width: 50em; margin-bottom: 1em">JavaScript:<br>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
54 <textarea id="code" name="code"></textarea></div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
55 <div style="max-width: 50em; margin-bottom: 1em">HTML:<br>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
56 <textarea id="code-html" name="code-html"></textarea></div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
57 <div style="max-width: 50em; margin-bottom: 1em">JSON with custom widget:<br>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
58 <textarea id="code-json" name="code-json">
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
59 {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
60 "menu": {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
61 "id": "file",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
62 "value": "File",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
63 "popup": {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
64 "menuitem": [
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
65 {"value": "New", "onclick": "CreateNewDoc()"},
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
66 {"value": "Open", "onclick": "OpenDoc()"},
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
67 {"value": "Close", "onclick": "CloseDoc()"}
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
68 ]
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
69 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
70 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
71 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
72 </textarea></div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
73 <div style="max-width: 50em">Python:<br>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
74 <textarea id="code-python" name="code">
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
75 def foo():
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
76 do_some_stuff()
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
77 here
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
78 return None
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
79
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
80 class Bar:
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
81 __init__(self):
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
82 if True:
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
83 print("True")
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
84 else:
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
85 print("False")
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
86
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
87 this_code_makes_no_sense():
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
88 pass
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
89
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
90 # A comment</textarea></div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
91 <div style="max-width: 50em">Markdown:<br>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
92 <textarea id="code-markdown" name="code"></textarea></div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
93 </form>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
94 <script id="script">
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
95 /*
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
96 * Demonstration of code folding
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
97 */
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
98 window.onload = function() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
99 var te = document.getElementById("code");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
100 var sc = document.getElementById("script");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
101 te.value = (sc.textContent || sc.innerText || sc.innerHTML).replace(/^\s*/, "");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
102 sc.innerHTML = "";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
103 var te_html = document.getElementById("code-html");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
104 te_html.value = document.documentElement.innerHTML;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
105 var te_python = document.getElementById("code-python");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
106 var te_markdown = document.getElementById("code-markdown");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
107 te_markdown.value = "# Foo\n## Bar\n\nblah blah\n\n## Baz\n\nblah blah\n\n# Quux\n\nblah blah\n"
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
108 var te_json = document.getElementById("code-json");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
109
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
110 window.editor = CodeMirror.fromTextArea(te, {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
111 mode: "javascript",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
112 lineNumbers: true,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
113 lineWrapping: true,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
114 extraKeys: {"Ctrl-Q": function(cm){ cm.foldCode(cm.getCursor()); }},
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
115 foldGutter: true,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
116 gutters: ["CodeMirror-linenumbers", "CodeMirror-foldgutter"]
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
117 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
118 editor.foldCode(CodeMirror.Pos(13, 0));
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
119
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
120 window.editor_json = CodeMirror.fromTextArea(te_json, {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
121 mode: {name: "javascript", json: true},
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
122 lineNumbers: true,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
123 lineWrapping: true,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
124 extraKeys: {"Ctrl-Q": function(cm){ cm.foldCode(cm.getCursor()); }},
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
125 foldGutter: true,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
126 gutters: ["CodeMirror-linenumbers", "CodeMirror-foldgutter"],
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
127 foldOptions: {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
128 widget: (from, to) => {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
129 var count = undefined;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
130
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
131 // Get open / close token
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
132 var startToken = '{', endToken = '}';
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
133 var prevLine = window.editor_json.getLine(from.line);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
134 if (prevLine.lastIndexOf('[') > prevLine.lastIndexOf('{')) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
135 startToken = '[', endToken = ']';
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
136 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
137
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
138 // Get json content
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
139 var internal = window.editor_json.getRange(from, to);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
140 var toParse = startToken + internal + endToken;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
141
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
142 // Get key count
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
143 try {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
144 var parsed = JSON.parse(toParse);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
145 count = Object.keys(parsed).length;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
146 } catch(e) { }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
147
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
148 return count ? `\u21A4${count}\u21A6` : '\u2194';
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
149 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
150 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
151 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
152 editor_json.foldCode(CodeMirror.Pos(5, 0));
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
153
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
154 window.editor_html = CodeMirror.fromTextArea(te_html, {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
155 mode: "text/html",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
156 lineNumbers: true,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
157 lineWrapping: true,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
158 extraKeys: {"Ctrl-Q": function(cm){ cm.foldCode(cm.getCursor()); }},
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
159 foldGutter: true,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
160 gutters: ["CodeMirror-linenumbers", "CodeMirror-foldgutter"]
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
161 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
162 editor_html.foldCode(CodeMirror.Pos(0, 0));
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
163 editor_html.foldCode(CodeMirror.Pos(34, 0));
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
164
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
165 window.editor_python = CodeMirror.fromTextArea(te_python, {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
166 mode: "python",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
167 lineNumbers: true,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
168 extraKeys: {"Ctrl-Q": function(cm){ cm.foldCode(cm.getCursor()); }},
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
169 foldGutter: true,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
170 gutters: ["CodeMirror-linenumbers", "CodeMirror-foldgutter"]
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
171 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
172
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
173 window.editor_markdown = CodeMirror.fromTextArea(te_markdown, {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
174 mode: "markdown",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
175 lineNumbers: true,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
176 lineWrapping: true,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
177 extraKeys: {"Ctrl-Q": function(cm){ cm.foldCode(cm.getCursor()); }},
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
178 foldGutter: true,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
179 gutters: ["CodeMirror-linenumbers", "CodeMirror-foldgutter"]
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
180 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
181 };
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
182 </script>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
183 </article>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
184 </body>