blob: f52164a08ba3fa6d9102e2314dc86a8cd90b8035 (
plain)
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
|
;;; ravi-init-appearance.el --- Emacs appearance
;; Copyright (C) 2013
;; Author: <ravi@nero.lan>
;; Keywords:
;; This program is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;; Customization of emacs appearance
;;; Code:
;; No splash screen please
(setq inhibit-startup-message t)
;; Allow pasting selection outside of Emacs
(setq x-select-enable-clipboard t)
;; Show keystrokes in progress
(setq echo-keystrokes 0.1)
;; Real emacs knights don't use shift to mark things
(setq shift-select-mode nil)
;; Enable syntax highlighting for older Emacsen that have it off
(global-font-lock-mode t)
(setq font-lock-maximum-decoration t)
;; Sounds.
;; Turn off sound.
(setq bell-volume 0)
(setq sound-alist nil)
(add-to-list 'default-frame-alist '(cursor-color . "#ffb90f") t)
;; Answering just 'y' or 'n' will do
(defalias 'yes-or-no-p 'y-or-n-p)
;; Customization of modeline.
(line-number-mode 1)
(column-number-mode 1)
(display-time)
;; Change the way the buffer name is displayed in the modeline.
(setq-default mode-line-buffer-identification '("%17b"))
;; Undo/redo window configuration with C-c <left>/<right>
(winner-mode 1)
;; Never insert tabs
(set-default 'indent-tabs-mode nil)
;; Show me empty lines after buffer end (replaced, see below)
;(set-default 'indicate-empty-lines t)
(use-package whitespace
:init
(setq whitespace-style '(face trailing indentation tabs))
:config
(progn
(global-whitespace-mode 1)
(add-hook 'before-save-hook 'whitespace-cleanup)
)
; No need for 'ensure: t' since whitespace mode is built in
:diminish global-whitespace-mode
)
;; Handling end of files.
(setq require-final-newline t)
;; Prevent addition of lines at end of file when down arrow is pressed.
(setq next-line-add-newlines nil)
;; Kill the entire line, please
(setq kill-whole-line t)
;; Easily navigate sillycased words
;(global-subword-mode 1)
;; Keep cursor away from edges when scrolling up/down
(use-package smooth-scrolling
:ensure t
)
;; Enable automatic indentation, if possible
(bind-key "<return>" 'newline-and-indent prog-mode-map)
(bind-key "<return>" 'newline-and-indent emacs-lisp-mode-map)
;; Zap up to char is more useful than zap-char
(autoload 'zap-up-to-char "misc" "Kill up to, but not including ARGth occurrence of CHAR.")
(bind-key "M-z" 'zap-up-to-char)
(bind-key "M-Z" 'zap-to-char)
;; Automatic indentation of yanked text
(dolist (command '(yank yank-pop))
(eval `(defadvice ,command (after indent-region activate)
(and (not current-prefix-arg)
(member major-mode '(emacs-lisp-mode lisp-mode
clojure-mode scheme-mode
haskell-mode ruby-mode
rspec-mode python-mode
c-mode c++-mode
objc-mode latex-mode
plain-tex-mode))
(let ((mark-even-if-inactive transient-mark-mode))
(indent-region (region-beginning) (region-end) nil))))))
;; Keep my navigation simple
(setq line-move-visual nil)
;; Represent undo-history as an actual tree (visualize with C-x u)
(use-package undo-tree
:init
(setq undo-tree-mode-lighter "")
:config
(progn
(global-undo-tree-mode)
(setq undo-tree-auto-save-history t)
(setq undo-tree-history-directory-alist
`(("." . ,(expand-file-name "undotree/" (ravi/emacs-file "past")))))
)
:ensure t
)
;; Discover emacs
;; Since discover.el replaces keymaps wholesale for "C-x r" and "M-s", it overrides
;; our additions to them. So we use guide-key for "C-x r" and "M-s".
(use-package discover
:config
(progn
(add-hook 'dired-mode-hook 'discover-turn-on-in-dired)
)
:disabled t ;; unstable API and hosing user-provided keybindings
:ensure t
)
;; Help for prefix key-bindings not in discover-mode
(use-package guide-key
:config
(progn
(setq guide-key/guide-key-sequence '("C-c p" ;; projectile
"C-c d" ;; doxymacs
"C-x 4" ;; other-window
"C-x r" ;; rectangles/registers
"M-s" ;; isearch
"C-x v" ;; version control
"M-g" ;; movement
"C-x 5" ;; frames
"C-x n" ;; narrowing
))
(guide-key-mode 1)
(use-package guide-key-tip
:config
(progn
(setq guide-key-tip/enabled t))
:ensure t
:disabled t ;; popups don't always go away; need to file a bug report
)
)
:diminish guide-key-mode
:ensure t
)
(bind-key "C-h a" 'apropos)
(use-package popwin
:init
(progn
(popwin-mode 1)
(push '("*Pp Eval Output*" :height 15) popwin:special-display-config))
:ensure t
)
(use-package import-popwin
:bind (("M-i" . import-popwin))
:ensure t
)
(use-package ace-window
:bind (("M-o" . ace-window))
:init
(progn
(setq aw-keys '(?a ?s ?d ?f ?g ?h ?j ?k ?l ?i ?e)))
:ensure t
)
(provide 'ravi-init-appearance)
;;; ravi-init-appearance.el ends here
|