forked from technomancy/emacs-starter-kit
-
Notifications
You must be signed in to change notification settings - Fork 0
/
roman.el
211 lines (177 loc) · 6.65 KB
/
roman.el
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
;;; Custom elpa packages.
(setq starter-kit-packages
(list
'clojure-mode
'clojure-test-mode
'css-mode
'erc
'gist
'haml-mode
'idle-highlight
'inf-ruby
'js2-mode
'json
'magit
'ruby-mode
'sass-mode
'smart-tab
'yaml-mode
))
;;; Install the custom elpa packages, if not already installed.
(starter-kit-elpa-install)
(defun google (query)
"Search for QUERY on Google."
(interactive "sGoogle: ")
(browse-url (concat "http://www.google.com/search?q=" query)))
(defun toggle-fullscreen ()
"Toggle fullscreen mode."
(interactive)
(x-send-client-message nil 0 nil "_NET_WM_STATE" 32 '(2 "_NET_WM_STATE_MAXIMIZED_VERT" 0))
(x-send-client-message nil 0 nil "_NET_WM_STATE" 32 '(2 "_NET_WM_STATE_MAXIMIZED_HORZ" 0)))
;; Invoking multiple shells, and defining new shells.
;; See: http://www.emacswiki.org/emacs/ShellMode#toc3
(defun shell-dwim (&optional create)
"Start or switch to an inferior shell process, in a smart way.
If a buffer with a running shell process exists, simply switch to
that buffer.
If a shell buffer exists, but the shell process is not running,
restart the shell.
If already in an active shell buffer, switch to the next one, if
any.
With prefix argument CREATE always start a new shell."
(interactive "P")
(let* ((next-shell-buffer
(catch 'found
(dolist (buffer (reverse (buffer-list)))
(when (and
(string-match "^\\*shell\\*" (buffer-name buffer))
(not (string= (buffer-name) (buffer-name buffer))))
(throw 'found buffer)))))
(buffer (if create (generate-new-buffer-name "*shell*")
next-shell-buffer)))
(shell buffer)))
;; Use IDO fro comint history
;; See: http://paste.lisp.org/display/37129 (modified to remove duplicate)
(defun ido-complete-comint-input-ring ()
"Fetch a previous element from history using ido-like completion.
This function searches *all* elements in history, not just
previous or next elements like Comint's normal completion.
So you can bind it to both M-r and M-s."
(interactive)
(unless (null comint-input-ring)
(let* ((elt (ido-completing-read
"History: " (delete "" (remove-duplicates (cddr (ring-elements comint-input-ring)) :test #'string=))
nil t))
(pos (comint-previous-matching-input-string-position
(regexp-quote elt) 1)))
(unless (null pos)
(setq comint-input-ring-index pos)
(message "History item: %d" (1+ pos))
(comint-delete-input)
(insert (ring-ref comint-input-ring pos))))))
;; Use my custom color theme.
(require 'color-theme)
(load-file "~/.emacs.d/color-theme-roman.el")
(color-theme-roman)
;; Start maximized.
;(toggle-fullscreen)
;; Show the menu-bar, but not the scroll-bar.
(if (fboundp 'menu-bar-mode) (menu-bar-mode t))
(if (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))
;; Enable cut-and-paste between Emacs and X clipboard.
(setq x-select-enable-clipboard t)
;;; COMPILE-MODE
(setq compilation-scroll-output 't)
;; CLOJURE-MODE
(defun clojure-mode-setup-indent ()
(define-clojure-indent (are 1))
(define-clojure-indent (dstest 1))
(define-clojure-indent (uncountable 1)))
(add-hook 'clojure-mode-hook 'clojure-mode-setup-indent)
;; DESKTOP SAVE MODE
(setq desktop-path '("." "~" "~/.emacs.d"))
(setq desktop-save 'if-exists)
(setq desktop-globals-to-save
(append '((extended-command-history . 30)
(file-name-history . 100)
(grep-history . 30)
(compile-history . 30)
(minibuffer-history . 50)
(query-replace-history . 60)
(read-expression-history . 60)
(regexp-history . 60)
(regexp-search-ring . 20)
(search-ring . 20)
(shell-command-history . 250)
tags-file-name
register-alist)))
(desktop-save-mode 1)
;;; ERC MODE
(setq erc-nick "r0man")
(setq erc-user-full-name "Roman Scherer")
(require 'erc-join)
(erc-autojoin-mode 1)
(setq erc-autojoin-channels-alist '(("freenode.net" "#clojure")))
;;; ESPRESSO MODE
(setq auto-mode-alist (remove '("\\.js$" . espresso-mode) auto-mode-alist))
(setq auto-mode-alist (remove '("\\.json$" . espresso-mode) auto-mode-alist))
;;; FLYSPELL MODE.
(dolist (hook '(LaTeX-mode-hook))
(add-hook hook 'flyspell-mode))
(setq flyspell-abbrev-p t) ; Add corrected words to abbreviation
; table.
;;; GIT
(add-to-list 'load-path "/usr/share/doc/git-core/contrib/emacs")
(require 'git-blame)
;;; HIPPIE EXPAND
(setq hippie-expand-try-functions-list
'(try-expand-all-abbrevs
try-expand-dabbrev
try-expand-dabbrev-all-buffers
try-expand-dabbrev-from-kill
try-complete-file-name-partially
try-complete-file-name
))
;;; MOZ-REPL MODE
(autoload 'moz-minor-mode "moz" "Mozilla Minor and Inferior Mozilla Modes" t)
(add-hook 'javascript-mode-hook 'javascript-custom-setup)
(defun javascript-custom-setup ()
(moz-minor-mode 1))
;;; SMART-TAB
(setq smart-tab-using-hippie-expand t)
(dolist (hook '(emacs-lisp-mode-hook
haml-mode-hook
LaTeX-mode-hook
ruby-mode-hook
yaml-mode
slime-mode-hook))
(add-hook hook (lambda () (smart-tab-mode t))))
;;; COMINT MODE
(custom-set-variables
'(comint-scroll-to-bottom-on-input t) ; always insert at the bottom
'(comint-scroll-to-bottom-on-output t) ; always add output at the bottom
'(comint-scroll-show-maximum-output t) ; scroll to show max possible output
'(comint-completion-autolist t) ; show completion list when ambiguous
'(comint-input-ignoredups t) ; no duplicates in command history
'(comint-completion-addsuffix t) ; insert space/slash after file completion
)
;;; RUBY-TEST MODE
(require 'ruby-test-mode)
;;; SHELL MODE
(require 'shell)
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)
(define-key shell-mode-map (kbd "M-r") 'ido-complete-comint-input-ring)
(define-key shell-mode-map (kbd "M-s") 'ido-complete-comint-input-ring)
;;; KEY BINDINGS
;; Restore some default key bindings overridden by emacs starter kit.
(global-set-key (kbd "C-x h") 'mark-whole-buffer)
(global-set-key (kbd "C-x ^") 'enlarge-window)
(global-set-key (kbd "C-x C-o") 'delete-blank-lines)
;; Unset the eshell ey bindings.
(global-unset-key (kbd "C-x m"))
(global-unset-key (kbd "C-x M"))
;; Cycle through or spawn new shell buffers.
(global-set-key [f7] 'shell-dwim)
;; Compile with F5.
(global-set-key [f5] 'compile)
(global-set-key (kbd "C-x I") 'indent-buffer)