emacs keybindins
[dotfiles.git] / emacs.d / config / init-key-binding.el
1 ;; This  file is for some global key binding
2
3 (require 'key-chord)
4
5 ;(setq key-chord-two-keys-delay 0.2)
6
7 ;; from emacs conference 2015 workshop
8 (defun keychord-keymap (keychord bindings)
9   (setq keymap (make-sparse-keymap))
10   (dolist (binding bindings)
11     (define-key keymap (car binding) (cdr binding)))
12   (key-chord-define-global keychord keymap))
13
14
15
16
17 ;;; keychord
18 ;;;
19 (defun switch-to-previous-buffer ()
20   "Switch to previously open buffer. Repeated invocations toggle between the two most recently open buffers."
21   (interactive)
22   (switch-to-buffer (other-buffer (current-buffer) 1)))
23
24
25 ;; main keymap
26 ;n(keychord-keymap "ss"
27 ;                 '(("j" . helm-mini)
28 ;                   ("k" . find-file)
29 ;                  ("o" . delete-other-windows)))
30
31 ;; for some helm key mapping
32 ;(key-chord-define-global "sj" 'helm-mini)
33 ;(key-chord-define-global "sk" 'helm-find-files)
34
35 ;(key-chord-define-global ";w" 'save-buffer)
36 ;(key-chord-define-global ";s" 'split-window-below)
37 ;(key-chord-define-global ";v" 'split-window-right)
38 ;(key-chord-define-global ";q" 'delete-window)
39
40
41 (key-chord-define-global "JJ" 'save-buffer)
42 (key-chord-define-global "HH" 'save-buffer)
43 (key-chord-define-global "KK" 'save-buffer)
44 (key-chord-define-global "LL" 'save-buffer)
45 (key-chord-define-global "LL" 'save-buffer)
46 (key-chord-define-global "UU" 'save-buffer)
47 (key-chord-define-global "II" 'save-buffer)
48 (key-chord-define-global "OO" 'save-buffer)
49 (key-chord-define-global "NN" 'save-buffer)
50 (key-chord-define-global "MM" 'save-buffer)
51 (key-chord-define-global "PP" 'save-buffer)
52 (key-chord-define-global "YY" 'save-buffer)
53
54
55
56
57 (key-chord-define minibuffer-local-map "qq" "\C-g")
58
59
60 (key-chord-define minibuffer-local-map "jj"  'keyboard-escape-quit)
61 (key-chord-define minibuffer-local-ns-map "jj"  'keyboard-escape-quit)
62 (key-chord-define minibuffer-local-isearch-map "jj"  'keyboard-escape-quit)
63 (key-chord-define minibuffer-local-completion-map "jj"  'keyboard-escape-quit)
64 (key-chord-define minibuffer-local-must-match-map "jj"  'keyboard-escape-quit)
65 (key-chord-define minibuffer-local-must-match-filename-map "jj"  'keyboard-escape-quit)
66 (key-chord-define minibuffer-local-filename-completion-map "jj"  'keyboard-escape-quit)
67 (key-chord-define minibuffer-local-filename-must-match-map "jj"  'keyboard-escape-quit)
68
69
70
71 (key-chord-mode 1)
72
73
74
75 ;;; global key mapping, windows buffer, tab, project
76 ;;;
77 (defun pl-make-keymap (key bindings)
78   (setq keymap (make-sparse-keymap))
79   (dolist (binding bindings)
80     (define-key keymap (car binding) (cdr binding)))
81   (global-set-key key keymap))
82
83 ;; ESC s j
84 (pl-make-keymap "\M-s"
85             '(("j" . helm-mini)
86               ("k" . helm-find-files)
87               ("w" . save-buffer)
88               ("q" . helm-find-files)
89               ("-" . split-window-below)
90               ("\\" . split-window-right)
91 ;             ("\M-s" . split-window-below)
92 ;             ("\M-v" . split-window-right)
93               ("o" . occur)
94               ("b" . helm-find-files)))
95
96 ;; ESC ; j M-; add comment, 
97 (pl-make-keymap "\M-;"
98             '(("v" . split-window-below)
99               ("h" . split-window-right)
100               ("b" . helm-find-files)))
101
102 ;; ESC c 
103 (pl-make-keymap "\M-c"
104             '(("v" . split-window-below)
105
106
107
108               ("h" . split-window-right)
109               ("b" . helm-find-files)))
110
111
112 ;; Esc o - set font , can change
113 ;; M-l M-u low/up caps can changed
114 ;; M-t transpose, not used, changed
115 ;; M-z
116 ;; M-c capitialize
117
118
119 ;(global-set-key (kbd "M-s j") 'helm-mini)
120 ;(global-set-key (kbd "M-s k") 'helm-find-files)
121
122 ;; ESC ESC + i
123 (global-set-key (kbd "ESC M-h") 'helm-mini)
124 (global-set-key (kbd "ESC M-j") 'helm-mini)
125 (global-set-key (kbd "ESC M-k") 'helm-mini)
126 (global-set-key (kbd "ESC M-l") 'helm-mini)
127 (global-set-key (kbd "ESC M-;") 'helm-mini)
128 (global-set-key (kbd "ESC M-y") 'helm-mini)
129 (global-set-key (kbd "ESC M-u") 'helm-mini)
130 (global-set-key (kbd "ESC M-i") 'helm-mini)
131 (global-set-key (kbd "ESC M-o") 'other-window)
132 (global-set-key (kbd "ESC M-p") 'helm-mini)
133 (global-set-key (kbd "ESC M-n") 'helm-mini)
134 (global-set-key (kbd "ESC M-m") 'helm-mini)
135 (global-set-key (kbd "ESC M-y") 'helm-mini)
136 (global-set-key (kbd "ESC M-s") 'split-window-below)
137 (global-set-key (kbd "ESC M-v") 'split-window-right)
138 (global-set-key (kbd "ESC M-u") 'helm-mini)
139 (global-set-key (kbd "ESC M-i") 'helm-mini)
140 (global-set-key (kbd "ESC M-p") 'helm-mini)
141 (global-set-key (kbd "ESC M-;") 'helm-mini)
142 (global-set-key (kbd "ESC M-1") 'delete-other-windows)
143 (global-set-key (kbd "ESC M-2") 'split-window-below)
144 (global-set-key (kbd "ESC M-3") 'split-window-right)
145
146
147 (global-set-key (kbd "C-; C-j") 'helm-mini)
148
149 ;(global-set-key (kbd "<escape> j") 'helm-mini)
150 ;(global-set-key (kbd "<escape> k") 'helm-find-files)
151 ;(global-set-key (kbd "<escape> l") 'find-file)
152 ;(global-set-key (kbd "<escape> f") 'find-file)
153 ;(global-set-key (kbd "<escape> M-a") 'find-file)
154 ;(global-set-key (kbd "<escape> M-a") 'find-file)
155 ;(global-set-key (kbd "<escape> M-a") 'find-file)
156 ;(global-set-key (kbd "<escape> M-o") 'delete-other-windows)
157 ;(global-set-key (kbd "<escape> M-h") 'other-window)
158 ;(global-set-key (kbd "<escape> M-j") 'find-file)
159 ;(global-set-key (kbd "<escape> M-k") 'find-file)
160 ;(global-set-key (kbd "<escape> M-l") 'find-file)
161
162
163
164 (defvar sacha/windmove-map (make-sparse-keymap))
165 (define-key sacha/windmove-map "h" 'windmove-left)
166 (define-key sacha/windmove-map "t" 'windmove-up)
167 (define-key sacha/windmove-map "n" 'windmove-down)
168 (define-key sacha/windmove-map "s" 'windmove-right)
169 (define-key sacha/windmove-map "[left]" 'windmove-left)
170 (define-key sacha/windmove-map "[up]" 'windmove-up)
171 (define-key sacha/windmove-map "[down]" 'windmove-down)
172 (define-key sacha/windmove-map "[right]" 'windmove-right)
173 ;(key-chord-define-global "yy"     sacha/windmove-map)
174
175
176
177 ;; project
178 ;(global-set-key (kbd "<escape> M-n") 'find-file)
179 ;(global-set-key (kbd "<escape> M-m") 'find-file)
180 ;(global-set-key (kbd "<escape> M-p") 'find-file)
181 ;(global-set-key (kbd "<escape> M-u") 'find-file)
182 ;(global-set-key (kbd "<escape> M-y") 'find-file)
183 ;(global-set-key (kbd "<escape> <escape>") 'find-file)
184
185
186
187
188 (setq mac-command-modifier 'super) ; make cmd key do Meta
189
190
191
192 ;; super key for elscreen tabs
193 (global-set-key (kbd "<s-return>") 'toggle-frame-fullscreen)
194 (global-set-key (kbd "s-t") 'elscreen-create)
195 (global-set-key (kbd "s-n") 'elscreen-next)
196 (global-set-key (kbd "s-p") 'elscreen-previous)
197 ;;(global-set-key (kbd "s-k") (lambda () (interactive) (elscreen-kill (elscreen-get-current-screen))))
198 ;;(global-set-key (kbd "s-d") (lambda () (interactive) (elscreen-kill (elscreen-get-current-screen))))
199 ;; C-c C-d
200
201 (global-set-key (kbd "s-`") (lambda () (interactive) (elscreen-goto 0)))
202 (global-set-key (kbd "s-1") (lambda () (interactive) (elscreen-goto 1)))
203 (global-set-key (kbd "s-2") (lambda () (interactive) (elscreen-goto 2)))
204 (global-set-key (kbd "s-3") (lambda () (interactive) (elscreen-goto 3)))
205 (global-set-key (kbd "s-4") (lambda () (interactive) (elscreen-goto 4)))
206 (global-set-key (kbd "s-5") (lambda () (interactive) (elscreen-goto 5)))
207 (global-set-key (kbd "s-6") (lambda () (interactive) (elscreen-goto 6)))
208 (global-set-key (kbd "s-7") (lambda () (interactive) (elscreen-goto 7)))
209 (global-set-key (kbd "s-8") (lambda () (interactive) (elscreen-goto 8)))
210
211 ;; super key for windows
212 (global-set-key (kbd "s-l") 'split-window-below)
213 (global-set-key (kbd "s-h") 'split-window-right)
214 (global-set-key (kbd "s-i") 'other-window)
215 (global-set-key (kbd "s-j") 'delete-other-windows)
216
217 (global-set-key (kbd "s-k") (lambda () (interactive)
218                               (split-window-right)
219                               (other-window 1)
220                               (ido-find-file)))
221                                 
222                               
223
224
225 ;(global-set-key (kbd "M-g M-w") 'other-window)
226
227 ;;----------------------------------------------------------------------------
228 ;; C-o prefix binding for some File/Buffer switching/openning
229 ;;
230 ;;(global-unset-key "\C-o")
231 ;;(global-set-key (kbd "C-o C-o") 'keyboard-quit);; same as C-g to quit
232 ;;; c-o c-o swith to normal mode 
233 ;(global-set-key (kbd "C-o C-o") 'evil-normal-state)
234 ;;(global-set-key (kbd "C-o C-o") 'fiplr-find-file)
235 ;(global-set-key (kbd "C-o C-f") 'ido-find-file)
236 ;(global-set-key (kbd "C-o C-n") 'recentf-ido-find-file)
237 ;(global-set-key (kbd "C-o C-j") 'ido-switch-buffer)
238 ;(global-set-key (kbd "C-o C-j") 'ido-find-file)
239
240
241 ;(global-set-key (kbd "C-o C-g") 'ggtags-find-file)
242 ;(global-set-key (kbd "C-o C-t") 'ggtags-find-tag-dwim)
243
244 ;(global-set-key (kbd "M-g M-g") 'magit-status)
245
246 (global-set-key [f7] 'winner-undo)
247 (global-set-key [C-f7] 'winner-redo)
248
249
250 (defun recentf-ido-find-file ()
251   "Find a recent file using Ido."
252   (interactive)
253   (let ((file (ido-completing-read "Choose recent file: " recentf-list nil t)))
254     (when file
255       (find-file file))))
256
257
258 (global-set-key "\C-s" 'isearch-forward-regexp)
259 (global-set-key "\C-r" 'isearch-backward-regexp)
260
261 (provide 'init-key-binding)