diff --git a/funcs.el b/funcs.el index 638356317..c0cef0944 100644 --- a/funcs.el +++ b/funcs.el @@ -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) diff --git a/init-package/init-autopair.el b/init-package/init-autopair.el index 3e4d97fa1..6ed614028 100644 --- a/init-package/init-autopair.el +++ b/init-package/init-autopair.el @@ -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)) diff --git a/init-package/init-diminish.el b/init-package/init-diminish.el index ba41244e1..e1d38eaa0 100644 --- a/init-package/init-diminish.el +++ b/init-package/init-diminish.el @@ -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 diff --git a/init-package/init-elisp-slime-nav.el b/init-package/init-elisp-slime-nav.el new file mode 100644 index 000000000..e92e8a4ae --- /dev/null +++ b/init-package/init-elisp-slime-nav.el @@ -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))) diff --git a/init-package/init-evil.el b/init-package/init-evil.el index 28bade349..f3f590796 100644 --- a/init-package/init-evil.el +++ b/init-package/init-evil.el @@ -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 diff --git a/init-package/init-jedi.el b/init-package/init-jedi.el index c3bf9481b..44d3faa7c 100644 --- a/init-package/init-jedi.el +++ b/init-package/init-jedi.el @@ -1 +1,3 @@ +(setq jedi:setup-keys t) +(require 'jedi) (add-hook 'python-mode-hook 'jedi:setup) diff --git a/init-package/init-multi-term.el b/init-package/init-multi-term.el new file mode 100644 index 000000000..7967ac361 --- /dev/null +++ b/init-package/init-multi-term.el @@ -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")) diff --git a/init-package/init-paredit.el b/init-package/init-paredit.el index 79d65039f..b43b2e9da 100644 --- a/init-package/init-paredit.el +++ b/init-package/init-paredit.el @@ -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")) diff --git a/keybindings.el b/keybindings.el index 40389cbba..f92828f3f 100644 --- a/keybindings.el +++ b/keybindings.el @@ -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) diff --git a/packages.el b/packages.el index 2020e1343..e414dc390 100644 --- a/packages.el +++ b/packages.el @@ -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