experiment with key chord bindings, seems promising

This commit is contained in:
syl20bnr 2012-12-30 12:18:08 -05:00
parent 144adbc1eb
commit 975263cca1
10 changed files with 79 additions and 28 deletions

View File

@ -1,3 +1,14 @@
;; from magnars
(defun eval-and-replace ()
"Replace the preceding sexp with its value."
(interactive)
(backward-kill-sexp)
(condition-case nil
(prin1 (eval (read (current-kill 0)))
(current-buffer))
(error (message "Invalid expression")
(insert (current-kill 0)))))
;; from https://gist.github.com/3402786
(defun toggle-maximize-buffer () "Maximize buffer"
(interactive)
@ -30,6 +41,7 @@
(set-window-start w2 s1)
(setq i (1+ i))))))))
;; from magnars
(defun rename-current-buffer-file ()
"Renames current buffer and file it is visiting."
(interactive)
@ -47,6 +59,7 @@
(set-buffer-modified-p nil)
(message "File '%s' successfully renamed to '%s'" name (file-name-nondirectory new-name))))))))
;; from magnars
(defun delete-current-buffer-file ()
"Removes file connected to current buffer and kills buffer."
(interactive)
@ -60,6 +73,7 @@
(kill-buffer buffer)
(message "File '%s' successfully removed" filename)))))
;; from magnars
(defun copy-current-file-path ()
"Add current file path to kill ring. Limits the filename to project root if possible."
(interactive)
@ -68,16 +82,19 @@
(s-chop-prefix (eproject-root) filename)
filename))))
;; from magnars
(defun find-or-create-file-at-point ()
"Guesses what parts of the buffer under point is a file name and opens it."
(interactive)
(find-file (file-name-at-point)))
;; from magnars
(defun find-or-create-file-at-point-other-window ()
"Guesses what parts of the buffer under point is a file name and opens it."
(interactive)
(find-file-other-window (file-name-at-point)))
;; from magnars
(defun file-name-at-point ()
(save-excursion
(let* ((file-name-regexp "[./a-zA-Z0-9\-_~]")
@ -91,26 +108,18 @@
(point))))
(buffer-substring start end))))
;; from magnars
(defun touch-buffer-file ()
(interactive)
(insert " ")
(backward-delete-char 1)
(save-buffer))
;; from magnars
(defun sudo-edit (&optional arg)
(interactive "p")
(if (or arg (not buffer-file-name))
(find-file (concat "/sudo:root@localhost:" (ido-read-file-name "File: ")))
(find-alternate-file (concat "/sudo:root@localhost:" buffer-file-name))))
(defun eval-and-replace ()
"Replace the preceding sexp with its value."
(interactive)
(backward-kill-sexp)
(condition-case nil
(prin1 (eval (read (current-kill 0)))
(current-buffer))
(error (message "Invalid expression")
(insert (current-kill 0)))))
(provide 'funcs)

View File

@ -1,3 +1,6 @@
(autoload 'autopair-global-mode "autopair" nil t)
(autopair-global-mode)
(add-hook 'lisp-mode-hook #'(lambda () (setq autopair-dont-activate t)))
(require 'autopair)
(defvar autopair-modes '(python-mode))
(defun turn-on-autopair-mode () (autopair-mode 1))
(dolist (mode autopair-modes)
(add-hook (intern (concat (symbol-name mode) "-hook")) 'turn-on-autopair-mode))

View File

@ -1,15 +1,15 @@
(require 'diminish)
(eval-after-load "auto-complete"
'(diminish 'auto-complete-mode "ac"))
'(diminish 'auto-complete-mode "AC"))
(eval-after-load "autopair"
'(diminish 'autopair-mode))
'(diminish 'autopair-mode "AP"))
(eval-after-load "eproject"
'(diminish 'eproject-mode "prj"))
'(diminish 'eproject-mode "eproj"))
(eval-after-load "paredit"
'(diminish 'paredit-mode "pedit"))
'(diminish 'paredit-mode "PE"))
(eval-after-load "rainbow-mode"
'(diminish 'rainbow-mode))
@ -20,6 +20,9 @@
(eval-after-load "yasnippet"
'(diminish 'yas-minor-mode))
(eval-after-load 'elisp-slime-nav
'(diminish 'elisp-slime-nav-mode))
;; -----------------------------------------------------------------------------
(add-hook 'emacs-lisp-mode-hook

View File

@ -0,0 +1,4 @@
;; Elisp go-to-definition with M-. and back again with M-,
(require 'elisp-slime-nav)
(require 'evil)
(add-hook 'emacs-lisp-mode-hook (lambda () (elisp-slime-nav-mode t)))

View File

@ -3,9 +3,9 @@
(setq evil-emacs-state-cursor '("red" box))
(setq evil-normal-state-cursor '("orange" box))
(setq evil-visual-state-cursor '("green" box))
(setq evil-visual-state-cursor '("black" box))
(setq evil-insert-state-cursor '("green" bar))
(setq evil-motion-state-cursor '("gray" box))
(setq evil-motion-state-cursor '("purple" box))
(evil-mode 1)
;;Make evil-mode up/down operate in screen lines instead of logical lines
@ -13,6 +13,7 @@
(define-key evil-normal-state-map (kbd "k") 'evil-previous-visual-line)
;;Exit insert mode by pressing j and then k quickly
(key-chord-define evil-insert-state-map "jk" 'evil-normal-state)
(key-chord-define evil-visual-state-map "jk" 'evil-normal-state)
(define-key evil-normal-state-map (kbd "SPC") 'ace-jump-mode)
;; This is an endless debate and is just a matter of convention

View File

@ -1 +1,3 @@
(setq jedi:setup-keys t)
(require 'jedi)
(add-hook 'python-mode-hook 'jedi:setup)

View File

@ -0,0 +1,6 @@
(require 'multi-term)
(setq multi-term-program "/usr/bin/zsh")
;; for solarized dark theme
(custom-set-variables
'(term-default-bg-color "#002b36")
'(term-default-fg-color "#93a1a1"))

View File

@ -1,9 +1,3 @@
(eval-after-load 'paredit
;; need a binding that works in the terminal
'(progn
(define-key paredit-mode-map (kbd "M-)") 'paredit-forward-slurp-sexp)
(define-key paredit-mode-map (kbd "M-(") 'paredit-backward-slurp-sexp)))
(dolist (mode '(scheme emacs-lisp lisp clojure clojurescript))
(when (> (display-color-cells) 8)
(font-lock-add-keywords (intern (concat (symbol-name mode) "-mode"))

View File

@ -1,5 +1,32 @@
;; Windows switching
(global-set-key (kbd "C-x -") 'rotate-windows)
(global-set-key (kbd "C-x C--") 'toggle-maximize-buffer)
;; emacs
(key-chord-define evil-normal-state-map "em" 'smex)
;; elisp
(key-chord-define evil-normal-state-map "ev" 'eval-sexp)
(key-chord-define evil-normal-state-map "EV" 'eval-and-replace)
(key-chord-define evil-normal-state-map "EV" 'eval-and-replace)
(key-chord-define evil-normal-state-map "ed"
'elisp-slime-nav-find-elisp-thing-at-point)
;; windows
(key-chord-define evil-normal-state-map "wm" 'toggle-maximize-buffer)
(key-chord-define evil-normal-state-map "wr" 'rotate-windows)
(key-chord-define evil-normal-state-map "wp" 'evil-window-prev)
(key-chord-define evil-normal-state-map "wh" 'evil-window-left)
(key-chord-define evil-normal-state-map "wj" 'evil-window-down)
(key-chord-define evil-normal-state-map "wk" 'evil-window-up)
(key-chord-define evil-normal-state-map "wl" 'evil-window-right)
;; buffers
(key-chord-define evil-normal-state-map "bs" 'ido-switch-buffer)
(key-chord-define evil-normal-state-map "br" 'rename-current-buffer-file)
(key-chord-define evil-normal-state-map "bk" 'ido-kill-buffer)
(key-chord-define evil-normal-state-map "BK" 'delete-current-buffer-file)
;; files
(key-chord-define evil-normal-state-map "fo" 'ido-find-file)
(key-chord-define evil-normal-state-map "fp" 'find-file-in-project)
;; terminals
(key-chord-define evil-normal-state-map "tn" 'multi-term)
(key-chord-define evil-normal-state-map "th" 'multi-term-prev)
(key-chord-define evil-normal-state-map "tl" 'multi-term-next)
;; git
(key-chord-define evil-normal-state-map "ms" 'magit-status)
(provide 'keybindings)

View File

@ -13,6 +13,7 @@
autopair
deferred
diminish
elisp-slime-nav
epc
eproject
erlang
@ -28,6 +29,7 @@
key-chord
magit
multiple-cursors
multi-term
p4
paredit
powerline