5 ['<M-C-f>'] = B
.M
.forward
,
6 ['<M-C-b>'] = B
.M
.backward
,
7 ['<M-C-d>'] = B
.M
.forward_down
,
8 ['<M-C-u>'] = B
.M
.backward_up
,
9 ['<M-C-n>'] = B
.M
.forward_up
,
10 ['<M-C-p>'] = B
.M
.backward_down
,
11 ['<M-C-e>'] = B
.M
.next_beginning_of_defun
,
12 ['<M-C-a>'] = B
.M
.prev_beginning_of_defun
,
13 ['<M-e>'] = B
.M
.end_of_sentence
,
14 ['<M-a>'] = B
.M
.beginning_of_sentence
,
15 ['<M-f>'] = B
.M
.next_finish_float
,
16 ['<M-b>'] = B
.M
.prev_start_float
,
17 ['<C-x>]'] = B
.M
.next_section
,
18 ['<C-x>['] = B
.M
.prev_section
,
19 -- Structured selections:
20 ['<M-C- >'] = H
.I
.mark_sexp
,
21 ['<M-C-h>'] = H
.I
.mark_defun
,
22 ['<M-h>'] = H
.I
.mark_defun
,
23 ['<M-=>'] = H
.I
.expand_region
,
24 -- Structured deletions:
25 ['<M-C-k>'] = H
.I
.kill_sexp
,
26 ['<C-w>'] = H
.I
.backward_kill_sexp
, -- kill-region, if there is a selection
27 ['<M-k>'] = H
.I
.kill_sentence
,
28 ['<C-x><Backspace>'] = H
.I
.backward_kill_sentence
,
29 ['<M-d>'] = H
.I
.forward_kill_word
,
30 ['<M-Backspace>'] = H
.I
.backward_kill_word
,
32 ['<M-0><C-k>'] = H
.I
.backward_kill_line
,
33 -- Structured operators:
34 ['<M-S>'] = B
.O
.split_sexp
,
35 ['<M-J>'] = B
.O
.join_sexps
,
36 ['<C-Left>'] = B
.O
.forward_barf
,
37 ['<C-Right>'] = B
.O
.forward_slurp
,
38 ['<M-C-Right>'] = B
.O
.backward_barf
,
39 ['<M-C-Left>'] = B
.O
.backward_slurp
,
40 ['<M-r>'] = B
.O
.raise_sexp
,
41 ['<M-?>'] = B
.O
.convolute_sexp
,
42 ['<M-s>'] = B
.O
.splice_sexp
,
43 ['<M-(>'] = B
.O
.wrap_round
,
44 ['<M-">'] = B
.O
.meta_doublequote
,
45 ['<M-;>'] = B
.O
.wrap_comment
,
46 ['<M-C-t>'] = B
.O
.transpose_sexps
,
47 ['<M-t>'] = B
.O
.transpose_words
,
48 ['<M-Down>'] = H
.I
.splice_sexp_killing_forward
,
49 ['<M-Up>'] = H
.I
.splice_sexp_killing_backward
,
51 ['<C-d>'] = H
.I
.forward_delete
,
52 ['<Delete>'] = H
.I
.forward_delete
,
53 ['<Backspace>'] = H
.I
.backward_delete
,
54 ['<M-w>'] = B
.O
.yank
, -- kill-ring-save
55 ['<C-y>'] = B
.O
.put_after
, -- yank
56 ['<C- >'] = H
.I
.set_mark_command
,
57 ['<C-x><C-x>'] = H
.I
.exchange_point_and_mark
,
59 ['<C-g><C-_>'] = H
.A
.redo
,
60 ['<M-q>'] = B
.O
.format, -- reindent-defun
61 ['<C-t>'] = B
.O
.transpose_chars
,
62 ['<M-Enter>'] = B
.O
.open_next_line
,
63 ['<M-)>'] = B
.O
.close_and_newline
,
64 ['<M-]>'] = B
.O
.close_and_newline
,
65 ['<M-}>'] = B
.O
.close_and_newline
,
66 ['<C-x><C-e>'] = H
.I
.eval_last_sexp
,
67 ['<M-C-x>'] = B
.O
.eval_defun
,
71 local function local_set_key(key
, binding
)
72 win
:map(vis
.modes
.INSERT
, key
, binding
)
74 local_set_key('<C-f>', '<vis-motion-char-next>')
75 local_set_key('<C-b>', '<vis-motion-char-prev>')
76 local_set_key('<C-n>', '<vis-motion-line-down>') -- this disables completion
77 local_set_key('<C-p>', '<vis-motion-line-up>')
78 local_set_key('<C-e>', '<vis-motion-line-end>')
79 local_set_key('<C-a>', '<vis-motion-line-begin>')
80 local_set_key('<M-m>', '<vis-motion-line-start>')
81 local_set_key('<M->>', '<vis-motion-line-last><vis-append-line-end>')
82 local_set_key('<M-<>', '<vis-motion-line-first>')
83 local_set_key('<C-x><C-s>', '<vis-prompt-show>:w<Enter><vis-mode-insert>') -- XXX: upstream vis can't handle C-s and C-q
84 local_set_key('<C-x><C-c>', function() vis
:exit(0) end)