Emacs bindings demo

x
 
1
#include "syscalls.h"
2
/* getchar:  simple buffered version */
3
int getchar(void)
4
{
5
  static char buf[BUFSIZ];
6
  static char *bufp = buf;
7
  static int n = 0;
8
  if (n == 0) {  /* buffer is empty */
9
    n = read(0, buf, sizeof buf);
10
    bufp = buf;
11
  }
12
  return (--n >= 0) ? (unsigned char) *bufp++ : EOF;
13
}
14

The emacs keybindings are enabled by including keymap/emacs.js and setting the keyMap option to "emacs". Because CodeMirror's internal API is quite different from Emacs, they are only a loose approximation of actual emacs bindings, though.

Also note that a lot of browsers disallow certain keys from being captured. For example, Chrome blocks both Ctrl-W and Ctrl-N, with the result that idiomatic use of Emacs keys will constantly close your tab or open a new window.