-
Notifications
You must be signed in to change notification settings - Fork 0
/
.emacs
145 lines (117 loc) · 3.99 KB
/
.emacs
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
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(gud-gdb-command-name "gdb --annotate=1")
'(ido-mode (quote both) nil (ido))
'(large-file-warning-threshold nil)
'(safe-local-variable-values (quote ((erlang-indent-level . 2)))))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)
(setq erlang-indent-level 2)
(setq tab-width 2)
(setq indent-tabs-mode nil)
;;
;; Mac OS X fixes
;;
(setq default-input-method "MacOSX")
(setq mac-option-modifier nil
mac-command-modifier 'meta
x-select-enable-clipboard t)
;; Restore open buffers on startup
;; (desktop-save-mode 1)
;; Adding externally defined variables which may contain
;; sensitive information - sorry :)
(load "~/emacs/top-secret.el")
(add-to-list 'load-path "~/emacs/lib")
;;
;; Erlang mode
;;
(setq load-path (cons my-erlang-emacs-path
load-path))
(setq erlang-root-dir my-erlang-root-dir)
(setq exec-path (cons my-erlang-bin-dir exec-path))
(require 'erlang-start)
(add-hook 'erlang-mode-hook
(lambda ()
;; when starting an Erlang shell in Emacs, the node name
;; by default should be "emacs"
(setq inferior-erlang-machine-options '("-sname" "emacs"))
;; add Erlang functions to an imenu menu
(imenu-add-to-menubar "imenu")))
;; Associate erlang-mode with YAWS files
(setq auto-mode-alist
(cons '("\\.yaws$" . erlang-mode)
auto-mode-alist))
;; Extend erlang mode with Distel
(add-to-list 'load-path "~/git/distel/elisp")
(require 'distel)
(distel-setup)
;; Remove trailing whitespace on save
(add-hook 'before-save-hook
'delete-trailing-whitespace)
;; Flymake
;; - Has compatibility issues with distel, so... disabled.
;;(require 'erlang-flymake)
(defvar my-flymake-minor-mode-map
(let ((map (make-sparse-keymap)))
(define-key map "\M-p" 'flymake-goto-prev-error)
(define-key map "\M-n" 'flymake-goto-next-error)
map)
"Keymap for my flymake minor mode.")
(defun my-flymake-err-at (pos)
(let ((overlays (overlays-at pos)))
(remove nil
(mapcar (lambda (overlay)
(and (overlay-get overlay 'flymake-overlay)
(overlay-get overlay 'help-echo)))
overlays))))
(defun my-flymake-err-echo ()
(message "%s" (mapconcat 'identity (my-flymake-err-at (point)) "\n")))
(defadvice flymake-goto-next-error (after display-message activate compile)
(my-flymake-err-echo))
(defadvice flymake-goto-prev-error (after display-message activate compile)
(my-flymake-err-echo))
(define-minor-mode my-flymake-minor-mode
"Simple minor mode to navigate errors in flymake"
nil
nil
:keymap my-flymake-minor-mode-map)
(add-hook 'erlang-mode-hook 'my-flymake-minor-mode)
;;; ERC
(require 'erc)
(erc-autojoin-mode t)
(setq erc-autojoin-channels-alist
my-erc-autojoin-list)
(erc-track-mode t)
(setq erc-track-exclude-types '("JOIN" "NICK" "PART" "QUIT" "MODE"
"324" "329" "332" "353" "477"))
(setq erc-hide-list '("JOIN" "PART" "QUIT" "NICK"))
(defun djcb-erc-start-or-switch ()
"Connect to ERC or switch to last active buffer"
(interactive)
(if (get-buffer my-erc-addr)
(erc-track-switch-buffer 1)
(when (y-or-n-p "Start ERC? ")
(erc :server my-erc-server
:port 6667
:nick "joao"
:full-name "joao.neves"))))
(global-set-key (kbd "C-c i") 'djcb-erc-start-or-switch)
;; color-theme
(add-to-list 'load-path "~/emacs/color-theme-6.6.0")
(require 'color-theme)
(eval-after-load "color-theme"
'(progn
(color-theme-initialize)))
(add-to-list 'load-path "~/git/emacs-color-theme-solarized")
(require 'color-theme-solarized)
(color-theme-solarized-dark)
;; ido
(require 'ido)
(setq ido-enable-flex-matching t)