annotate .cms/lib/codemirror/demo/emacs.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 <title>CodeMirror: Emacs bindings demo</title>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
4 <meta charset="utf-8"/>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
5 <link rel=stylesheet href="../doc/docs.css">
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
6
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
7 <link rel="stylesheet" href="../lib/codemirror.css">
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
8 <link rel="stylesheet" href="../addon/dialog/dialog.css">
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
9 <script src="../lib/codemirror.js"></script>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
10 <script src="../mode/clike/clike.js"></script>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
11 <script src="../keymap/emacs.js"></script>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
12 <script src="../addon/edit/matchbrackets.js"></script>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
13 <script src="../addon/comment/comment.js"></script>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
14 <script src="../addon/dialog/dialog.js"></script>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
15 <script src="../addon/search/searchcursor.js"></script>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
16 <script src="../addon/search/search.js"></script>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
17 <style>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
18 .CodeMirror {border-top: 1px solid #eee; border-bottom: 1px solid #eee;}
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
19 </style>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
20 <div id=nav>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
21 <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
22
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
23 <ul>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
24 <li><a href="../index.html">Home</a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
25 <li><a href="../doc/manual.html">Manual</a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
26 <li><a href="https://github.com/codemirror/codemirror5">Code</a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
27 </ul>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
28 <ul>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
29 <li><a class=active href="#">Emacs bindings</a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
30 </ul>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
31 </div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
32
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
33 <article>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
34 <h2>Emacs bindings demo</h2>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
35 <form><textarea id="code" name="code">
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
36 #include "syscalls.h"
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
37 /* getchar: simple buffered version */
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
38 int getchar(void)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
39 {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
40 static char buf[BUFSIZ];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
41 static char *bufp = buf;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
42 static int n = 0;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
43 if (n == 0) { /* buffer is empty */
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
44 n = read(0, buf, sizeof buf);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
45 bufp = buf;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
46 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
47 return (--n >= 0) ? (unsigned char) *bufp++ : EOF;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
48 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
49 </textarea></form>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
50
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
51 <p>The emacs keybindings are enabled by
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
52 including <a href="../keymap/emacs.js">keymap/emacs.js</a> and setting
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
53 the <code>keyMap</code> option to <code>"emacs"</code>. Because
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
54 CodeMirror's internal API is quite different from Emacs, they are only
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
55 a loose approximation of actual emacs bindings, though.</p>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
56
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
57 <p>Also note that a lot of browsers disallow certain keys from being
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
58 captured. For example, Chrome blocks both Ctrl-W and Ctrl-N, with the
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
59 result that idiomatic use of Emacs keys will constantly close your tab
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
60 or open a new window.</p>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
61
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
62 <script>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
63 CodeMirror.commands.save = function() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
64 var elt = editor.getWrapperElement();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
65 elt.style.background = "#def";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
66 setTimeout(function() { elt.style.background = ""; }, 300);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
67 };
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
68 var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
69 lineNumbers: true,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
70 mode: "text/x-csrc",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
71 matchBrackets: true,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
72 keyMap: "emacs"
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
73 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
74 </script>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
75
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
76 </article>