Skip to content

Commit b98dcdf

Browse files
committed
Sync up with November dotfiles emacs.d
1 parent 4a8d502 commit b98dcdf

14 files changed

+585
-295
lines changed

.gitignore

+3-14
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,3 @@
1-
# Emacs temp files
2-
*~
3-
4-
# Compiled list files
5-
.smex-items
6-
elpa/*
7-
places
8-
eshell/*
9-
projectile-bookmarks.eld
10-
projectile.cache
11-
var/pcache/*
12-
/.org-id-locations
13-
/session.*
14-
/tramp
1+
# Emacs related files
2+
elpa/
3+
.cache/

.gitmodules

-3
This file was deleted.

README.md

+1-8
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,6 @@
1-
My .emacs.d/ configs
2-
3-
Real brief intro, I'll spruce up this README soon/later.
1+
My .emacs.d/ configs, synced up with what has been on my dotfiles [repo](github.com/agsdot/dotfiles), as of November 2014.
42

53
git clone https://github.com/agsdot/.emacs.d.git ~/.emacs.d
6-
cd ~/.emacs.d
7-
git submodule init
8-
git submodule update
9-
10-
Basically pull in my .emacs.d configs and then source the submodules, which now includes neotree.
114

125
Enjoy,
136

config/init-aesthetics.el

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
(require-package 'base16-theme)
2+
(require-package 'color-theme-sanityinc-tomorrow)
3+
(require-package 'monokai-theme)
4+
(require-package 'solarized-theme)
5+
(require-package 'zenburn-theme)
6+
7+
;; (require-package 'crosshairs)
8+
;; (require-package 'rainbow-delimiters)
9+
(require-package 'smartparens)
10+
11+
(line-number-mode t)
12+
(column-number-mode t)
13+
(global-linum-mode t)
14+
15+
;; (require 'crosshairs)
16+
;; (toggle-crosshairs-when-idle 30)
17+
18+
;; (require 'rainbow-delimiters)
19+
;; (global-rainbow-delimiters-mode)
20+
21+
(require 'smartparens-config)
22+
(smartparens-global-mode t)
23+
24+
(require 'whitespace)
25+
;; (global-whitespace-mode)
26+
(setq whitespace-style (quote (spaces tabs newline space-mark tab-mark newline-mark)))
27+
(setq whitespace-display-mappings
28+
'((space-mark 32 [183] [46])
29+
(tab-mark 9 [9655 9] [92 9])))
30+
31+
;; (load-theme 'sanityinc-tomorrow-eighties t)
32+
;; (load "tomorrow-night-eighties-theme.el")
33+
;; (require 'tomorrow-night-eighties-theme)
34+
(require 'zenburn-theme)
35+
36+
;;;;;;;;;;
37+
(provide 'init-aesthetics)

config/init-basics.el

+96
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
(require-package 'f)
2+
(require-package 'undo-tree)
3+
(require-package 'hungry-delete)
4+
5+
(defcustom dotemacs-cache-directory (concat user-emacs-directory ".cache/")
6+
"The storage location for various persistent files.")
7+
8+
(require 'f)
9+
(after-load 'f
10+
(unless (f-exists? dotemacs-cache-directory)
11+
(f-mkdir dotemacs-cache-directory)))
12+
13+
;; Dont display logo at startup
14+
(setq inhibit-startup-message t)
15+
16+
;; menu bar visibility
17+
(menu-bar-mode -1)
18+
19+
;; Backup Files location
20+
;; https://github.com/bling/dotemacs/blob/master/config/init-core.el
21+
(setq backup-directory-alist
22+
`((".*" . ,(concat dotemacs-cache-directory "backups")))
23+
auto-save-file-name-transforms
24+
`((".*" ,(concat dotemacs-cache-directory "backups") t))
25+
auto-save-list-file-prefix
26+
(concat dotemacs-cache-directory "auto-save-list/saves-"))
27+
28+
;; Emacs: reopen buffers from last session on startup?
29+
;; http://stackoverflow.com/a/803828/2741455
30+
;; (desktop-save-mode 1)
31+
;; Some emacs desktop-save questions: how to change it to save in ~/.emacs.d/.emacs.desktop
32+
;; http://stackoverflow.com/a/4485083/2741455
33+
;; (setq desktop-path (list dotemacs-cache-directory))
34+
35+
;; Closing all other buffers in Emacs
36+
;; http://stackoverflow.com/a/3417473/2741455
37+
(defun kill-other-buffers ()
38+
"Kill all other buffers."
39+
(interactive)
40+
(mapc 'kill-buffer
41+
(delq (current-buffer)
42+
(remove-if-not 'buffer-file-name (buffer-list)))))
43+
44+
;; How do I change the scratch message in Emacs?
45+
;; http://stackoverflow.com/a/1498292/2741455
46+
(setq initial-scratch-message ";; This is the Emacs Scratch Buffer")
47+
48+
;; y/n instead of yes/no
49+
(defalias 'yes-or-no-p 'y-or-n-p)
50+
51+
;; Don't automatically add newline to end of file
52+
(setq mode-require-final-newline nil)
53+
54+
;; C-x C-j opens dired with the cursor right on the file you're editing
55+
(require 'dired-x)
56+
57+
;; Turn off ding
58+
(setq visible-bell 1)
59+
60+
;; FIX SHIFT-UP, impacts Emacs mode (doesn't affect Evil mode)
61+
;; from http://stackoverflow.com/questions/10871745/shift-up-arrow-doesnt-highlight-text-emacs-iterm2
62+
;; and http://lists.gnu.org/archive/html/help-gnu-emacs/2011-05/msg00211.html
63+
(define-key input-decode-map "\e[1;2A" [S-up])
64+
(if (equal "xterm" (tty-type))
65+
(define-key input-decode-map "\e[1;2A" [S-up]))
66+
(defadvice terminal-init-xterm (after select-shift-up activate)
67+
(define-key input-decode-map "\e[1;2A" [S-up]))
68+
69+
;; copy/paste with C-c and C-v and C-x, check out C-RET too
70+
;; impacts Emacs mode (doesn't affect Evil mode)
71+
(cua-mode)
72+
73+
;; From http://ergoemacs.org/emacs/emacs_best_redo_mode.html
74+
(require 'undo-tree)
75+
(global-undo-tree-mode t)
76+
(defalias 'redo 'undo-tree-redo)
77+
(global-set-key (kbd "C-z") 'undo) ; 【Ctrl+z】
78+
(global-set-key (kbd "C-S-z") 'redo) ; 【Ctrl+Shift+z】; Mac style
79+
(global-set-key (kbd "C-y") 'redo) ; 【Ctrl+y】; Microsoft Windows style
80+
81+
;; cross platform copy paste
82+
;(require 'cross-platform-copy-paste)
83+
84+
(require 'recentf)
85+
(recentf-mode 1)
86+
(setq recentf-max-menu-items 25)
87+
(global-set-key "\C-x\ \C-r" 'recentf-open-files)
88+
89+
(setq-default tab-width 2)
90+
(setq-default indent-tabs-mode nil) ;; seems to affect autocomplete modes
91+
92+
(require 'hungry-delete)
93+
(global-hungry-delete-mode)
94+
95+
;;;;;;;;;;
96+
(provide 'init-basics)

config/init-coding.el

+61
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
(require-package 'company)
2+
(require-package 'drag-stuff)
3+
(require-package 'git-gutter)
4+
(require-package 'git-timemachine)
5+
(require-package 'groovy-mode)
6+
(require-package 'js2-mode)
7+
(require-package 'linum-relative)
8+
(require-package 'lua-mode)
9+
(require-package 'magit)
10+
(require-package 'web-mode)
11+
(require-package 'vimrc-mode)
12+
13+
;; enable seeing of git diffs
14+
(require 'git-gutter)
15+
(global-git-gutter-mode +1)
16+
17+
;; http://whattheemacsd.com/setup-magit.el-01.html
18+
(defadvice magit-status (around magit-fullscreen activate)
19+
(window-configuration-to-register :magit-fullscreen)
20+
ad-do-it
21+
(delete-other-windows))
22+
(defun magit-quit-session ()
23+
"Restores the previous window configuration and kills the magit buffer"
24+
(interactive)
25+
(kill-buffer)
26+
(jump-to-register :magit-fullscreen))
27+
28+
(require 'web-mode)
29+
(add-to-list 'auto-mode-alist '("\\.html?\\'" . web-mode))
30+
(add-to-list 'auto-mode-alist '("\\.gsp?\\'" . web-mode))
31+
32+
;;; use groovy-mode when file ends in .groovy or has #!/bin/groovy at start
33+
(require 'groovy-mode)
34+
(autoload 'groovy-mode "groovy-mode" "Major mode for editing Groovy code." t)
35+
(add-to-list 'auto-mode-alist '("\.groovy$" . groovy-mode))
36+
(add-to-list 'auto-mode-alist '("\.gradle$" . groovy-mode))
37+
(add-to-list 'interpreter-mode-alist '("groovy" . groovy-mode))
38+
39+
;; https://immerrr.github.io/lua-mode/
40+
(require 'lua-mode)
41+
(add-to-list 'auto-mode-alist '("\\.lua$" . lua-mode))
42+
(add-to-list 'interpreter-mode-alist '("lua" . lua-mode))
43+
44+
45+
(require 'vimrc-mode)
46+
(add-to-list 'auto-mode-alist '(".vim\\(rc\\)?$" . vimrc-mode))
47+
48+
(add-hook 'after-init-hook 'global-company-mode)
49+
50+
(require 'drag-stuff)
51+
(drag-stuff-global-mode t)
52+
53+
(require 'linum-relative)
54+
;; http://stackoverflow.com/a/15310340/2741455
55+
;; How to set defcustom variable
56+
(after-load 'linum-relative
57+
(setq linum-relative-format "%3s ")
58+
(setq linum-relative-current-symbol ""))
59+
60+
;;;;;;;;;;
61+
(provide 'init-coding)

config/init-evil.el

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
(require-package 'evil)
2+
(require-package 'evil-jumper)
3+
(require-package 'evil-matchit)
4+
(require-package 'evil-nerd-commenter)
5+
(require-package 'evil-numbers)
6+
(require-package 'powerline-evil)
7+
8+
;; https://stackoverflow.com/questions/14302171/ctrl-u-in-emacs-when-using-evil-key-bindings
9+
(setq evil-want-C-u-scroll t)
10+
;; vim modal navigation
11+
(require 'evil)
12+
(defalias 'em 'evil-mode)
13+
(evil-mode 1)
14+
15+
;; Use a semicolon instead of the colon to get into command mode
16+
(define-key evil-normal-state-map ";" 'evil-ex)
17+
18+
; Make horizontal movement cross lines
19+
(setq-default evil-cross-lines t)
20+
21+
;; Make Evil-Jumper jump list persist in between sessions by storing to a file
22+
(setq evil-jumper-auto-center t)
23+
(setq evil-jumper-file (concat dotemacs-cache-directory "evil-jumps"))
24+
(setq evil-jumper-auto-save-interval 120)
25+
(setq evil-jumper-max-length 10)
26+
(require 'evil-jumper)
27+
28+
;; enable evil nerd commenter commenting, works in emacs mode and vim/evil mode
29+
(require 'evil-nerd-commenter)
30+
(evilnc-default-hotkeys)
31+
32+
(require 'evil-numbers)
33+
(define-key evil-normal-state-map (kbd "C-<right>") 'evil-numbers/inc-at-pt)
34+
(define-key evil-normal-state-map (kbd "C-<left>") 'evil-numbers/dec-at-pt)
35+
36+
(require 'powerline-evil)
37+
(powerline-evil-vim-theme)
38+
39+
(require 'evil-matchit)
40+
(global-evil-matchit-mode 1)
41+
42+
;;Make evil-mode up/down operate in screen lines instead of logical lines
43+
(define-key evil-normal-state-map (kbd "j") 'evil-next-visual-line)
44+
(define-key evil-normal-state-map (kbd "k") 'evil-previous-visual-line)
45+
46+
(evil-set-initial-state 'magit-status-mode 'emacs)
47+
(evil-set-initial-state 'magit-log-edit-mode 'emacs)
48+
49+
;;;;;;;;;;
50+
(provide 'init-evil)

config/init-keybindings.el

+106
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
(require-package 'evil-leader)
2+
(require-package 'key-chord)
3+
4+
;; Emacs style
5+
6+
;; Fast cursor movement in vertical direction with Meta.
7+
(global-set-key (kbd "M-n") (lambda () (interactive) (next-line 5)))
8+
(global-set-key (kbd "M-p") (lambda () (interactive) (previous-line 5)))
9+
10+
(global-set-key (kbd "M-g") 'goto-line)
11+
(global-set-key (kbd "C-x C-b") 'buffer-menu)
12+
;; (global-set-key (kbd "C-a") 'mark-whole-buffer)
13+
(global-set-key (kbd "C-c C-p") 'projectile-find-file)
14+
(global-set-key (kbd "C-c C-f") 'projectile-grep)
15+
16+
;; Shift <directional key> moves between windows
17+
(windmove-default-keybindings)
18+
19+
;; Vim style
20+
(global-evil-leader-mode)
21+
(evil-leader/set-leader ",")
22+
23+
;; use alternative/faster utilities than grep if found
24+
;; outside utilities need to be installed in bash with homebrew or apt-get or the packages directly
25+
;; pt, ag, and ack...grep is built into all unix systems
26+
(cond ((executable-find "pt")
27+
(require-package 'pt) ;; https://github.com/bling/pt.el
28+
(defalias 'my-search-util 'projectile-pt)) ;; seems pretty fast (faster than ag? maybe...dunno), but it's written in Go!
29+
((executable-find "ag")
30+
(require-package 'ag) ;; https://github.com/Wilfred/ag.el
31+
(defalias 'my-search-util 'projectile-ag)) ;; on the website, it said faster than ack
32+
((executable-find "ack")
33+
(require-package 'ack-and-a-half) ;; https://github.com/jhelwig/ack-and-a-half
34+
(defalias 'my-search-util 'projectile-ack)) ;; faster than grep
35+
((executable-find "grep")
36+
(defalias 'my-search-util 'projectile-grep)))
37+
38+
(evil-leader/set-key
39+
"b" 'buffer-menu
40+
"f" 'my-search-util
41+
"l" 'linum-relative-toggle
42+
"nf" 'neotree-find
43+
"nt" 'neotree-toggle
44+
"p" 'projectile-find-file
45+
"r" 'recentf-open-files
46+
"/" 'evilnc-comment-or-uncomment-lines
47+
;; "<down>" 'drag-stuff-down
48+
;; "<up>" 'drag-stuff-up
49+
)
50+
51+
;; To do a multiple line select and drag up/down
52+
;; Do a total line select, with Capital V, and make sure
53+
;; that the cursor is in the upper left corner of the region
54+
;; then proceed to ctrl up/down the region
55+
;; (the above instructions preclude some odd behavior from
56+
;; happening for a multiselect drag up/down, whereas
57+
;; single line movement is just fine)
58+
(define-key evil-normal-state-map (kbd "C-<down>") 'drag-stuff-down)
59+
(define-key evil-normal-state-map (kbd "C-<up>") 'drag-stuff-up)
60+
61+
(define-key evil-normal-state-map ":" 'smex)
62+
63+
;; Bind DEL and = keys to scrolling up and down
64+
;; https://stackoverflow.com/questions/8483182/evil-mode-best-practice
65+
(define-key evil-normal-state-map (kbd "DEL") (lambda ()
66+
(interactive)
67+
(previous-line 10)
68+
(evil-scroll-line-up 10)
69+
))
70+
71+
(define-key evil-normal-state-map (kbd "=") (lambda ()
72+
(interactive)
73+
(next-line 10)
74+
(evil-scroll-line-down 10)
75+
))
76+
77+
;; press k j in rapid succesion to escape
78+
;; http://stackoverflow.com/questions/10569165/how-to-map-jj-to-esc-in-emacs-evil-mode
79+
(define-key evil-insert-state-map "k" #'cofi/maybe-exit)
80+
81+
(evil-define-command cofi/maybe-exit ()
82+
:repeat change
83+
(interactive)
84+
(let ((modified (buffer-modified-p)))
85+
(insert "k")
86+
(let ((evt (read-event (format "Insert %c to exit insert state" ?j)
87+
nil 0.5)))
88+
(cond
89+
((null evt) (message ""))
90+
((and (integerp evt) (char-equal evt ?j))
91+
(delete-char -1)
92+
(set-buffer-modified-p modified)
93+
(push 'escape unread-command-events))
94+
(t (setq unread-command-events (append unread-command-events
95+
(list evt))))))))
96+
97+
;; Press jj in rapid succession to escape
98+
;; Whoa..two ways to do the same things, the above function and below with the key-chord-mode plugin
99+
(setq key-chord-two-keys-delay 0.2)
100+
;; from http://bbbscarter.wordpress.com/category/coding/emacs/
101+
(key-chord-mode 1)
102+
(setq key-chord-two-keys-delay 0.2)
103+
(key-chord-define evil-insert-state-map "jj" 'evil-normal-state)
104+
105+
;;;;;;;;;;
106+
(provide 'init-keybindings)

0 commit comments

Comments
 (0)