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