Merge commit 'f9cb63561b743176ef831298a84c421fdb112f16'
[vis-parkour.git] / keytheme / vim.lua
blob1370c3d4b0204550e85f4ff3b97bb02feb043259
1 return function(B, H)
2 return {
3 M = {
4 w = B.M.next_start,
5 b = B.M.prev_start,
6 e = B.M.next_finish,
7 ge = B.M.prev_finish,
8 W = B.M.forward_down,
9 B = B.M.backward_up,
10 E = B.M.forward_up,
11 gE = B.M.backward_down,
12 Q = B.M.backward_down, -- XXX: easier to repeat (no need to release and press Shift)
13 ['}'] = B.M.end_of_defun,
14 ['{'] = B.M.beginning_of_defun,
15 [')'] = B.M.end_of_sentence,
16 ['('] = B.M.beginning_of_sentence,
17 [']]'] = B.M.next_section,
18 ['[['] = B.M.prev_section,
19 ['<S-Right>'] = B.M.finish_right,
20 ['<S-Left>'] = B.M.start_left,
21 ['$'] = B.M.line_end,
22 ['0'] = B.M.line_begin,
24 O = {
25 gS = B.O.split_sexp,
26 gJ = B.O.join_sexps,
27 ['g}'] = B.O.forward_barf,
28 ['g)'] = B.O.forward_slurp,
29 ['g{'] = B.O.backward_barf,
30 ['g('] = B.O.backward_slurp,
31 ['g.'] = B.O.raise_sexp,
32 ['g?'] = B.O.convolute_sexp,
33 ['g@'] = B.O.splice_sexp,
34 ['gw('] = B.O.wrap_round,
35 ['gW'] = B.O.wrap_round,
36 ['gw['] = B.O.wrap_square,
37 ['gw{'] = B.O.wrap_curly,
38 ['gw"'] = B.O.wrap_doublequote,
39 ['gw;'] = B.O.wrap_comment,
40 ['<Enter>'] = B.O.eval_defun,
41 gT = B.O.transpose_sexps,
42 gt = B.O.transpose_words,
43 ['='] = B.O.format,
44 gc = B.O.cycle_wrap,
45 J = B.O.join_line,
46 d = B.O.delete,
47 c = B.O.change,
48 y = B.O.yank,
49 p = B.O.put_after,
50 P = B.O.put_before,
52 T = {
53 aw = B.T.outer_sexp,
54 iw = B.T.inner_sexp,
55 aW = B.T.outer_list,
56 iW = B.T.inner_list,
57 ab = B.T.outer_list,
58 ib = B.T.inner_list,
59 as = B.T.outer_sentence,
60 is = B.T.inner_sentence,
61 ap = B.T.outer_paragraph,
62 ip = B.T.inner_paragraph,
63 ['a"'] = B.T.outer_string,
64 ['i"'] = B.T.inner_string,
65 ['a;'] = B.T.outer_comment,
66 ['i;'] = B.T.inner_comment,
67 ['a('] = B.T.outer_round,
68 ['i('] = B.T.inner_round,
69 ['a['] = B.T.outer_square,
70 ['i['] = B.T.inner_square,
71 ['a{'] = B.T.outer_curly,
72 ['i{'] = B.T.inner_curly,
73 al = B.T.outer_line,
74 il = B.T.inner_line,
76 imap = {
77 ['<S-Right>'] = B.M.finish_right,
78 ['<S-Left>'] = B.M.start_left,
79 ['<Delete>'] = H.I.forward_delete,
80 ['<Backspace>'] = H.I.backward_delete,
81 ['<C-w>'] = H.I.backward_kill_sexp,
82 ['<C-u>'] = H.I.backward_kill_line,
83 ['<Tab>'] = B.O.format,
85 nmap = {
86 u = H.A.undo,
87 ['<C-r>'] = H.A.redo,
88 ['<C-n>'] = H.A.select_sexp,
90 raw = function(win)
91 local vis = vis
92 local function nmap(lhs, rhs)
93 win:map(vis.modes.NORMAL, lhs, rhs)
94 end
95 nmap('x', 'dl')
96 nmap('dd', 'dal')
97 nmap('cc', 'cil')
98 nmap('yy', 'yal')
99 nmap('O', '<vis-motion-line-begin><vis-motion-char-prev><vis-mode-insert><Enter>')
100 win:unmap(vis.modes.NORMAL, '$')
101 win:unmap(vis.modes.NORMAL, '0')
102 win:unmap(vis.modes.VISUAL, '<C-n>')