git.fiddlerwoaroof.com
Browse code

Miscellaneous changes

- git-update-repos added amongst other things
- emacs startup time optimizations

Ed Langley authored on 01/03/2018 18:28:48
Showing 9 changed files
... ...
@@ -1,19 +1,54 @@
1
-;;;; -*- mode: Emacs-Lisp;tab-width: 8;indent-tabs-mode: nil; -*-
1
+;; -*- mode: Emacs-Lisp;tab-width: 8;indent-tabs-mode: nil; -*-
2
+(setq gc-cons-threshold 100000000)
3
+(message invocation-name)
4
+(setq inhibit-splash-screen t)
5
+(setq inhibit-startup-message t)
6
+
7
+;;(let ((file-name-handler-alist nil))
8
+
9
+(add-hook 'after-init-hook
10
+          (lambda ()
11
+            ;; (require 'projectile)
12
+            ;; (require 'evil-numbers)
13
+
14
+            (unless (fboundp 'server-running-p)
15
+              (require 'server))
16
+            (unless (server-running-p)
17
+              (server-start))
18
+            (projectile-mode)
19
+            (evil-mode)
20
+            (paredit-mode)
21
+            ;;(global-company-mode)
22
+            (setq linum-format "%5d\u2502")
23
+            (global-linum-mode)
24
+            (set-exec-path-from-shell-PATH)
25
+
26
+            ;; NOTE: this must be here...
27
+            (slime-setup)
28
+
29
+            (global-company-mode 1)
30
+
31
+            ))
32
+
2 33
 
3 34
 (when (file-exists-p "/usr/local/bin/gls")
4 35
   (setq insert-directory-program "/usr/local/bin/gls"))
5 36
 
6
-(setq default-directory "~/emacs-home/")
7
-(make-directory default-directory t)
8 37
 
9 38
 (let ((default-directory  "~/.emacs.d/lisp/"))
10 39
   (make-directory default-directory t)
11 40
   (normal-top-level-add-to-load-path '("."))
12
-  (normal-top-level-add-subdirs-to-load-path))
41
+  (normal-top-level-add-subdirs-to-load-path)
42
+
43
+  (load "utils"))
44
+
45
+(setq default-directory "~/emacs-home/")
46
+(make-directory default-directory t)
13 47
 
14 48
 (setq vc-follow-symlinks t)
15 49
 
16 50
 (require 'package)
51
+
17 52
 (setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/")
18 53
                          ("org" . "http://orgmode.org/elpa/")
19 54
                          ("melpa" . "https://melpa.org/packages/")
... ...
@@ -28,26 +63,37 @@
28 63
   (package-refresh-contents)
29 64
   (package-install 'use-package))
30 65
 
66
+
67
+
31 68
 (require 'use-package)
69
+(use-package color-theme :ensure t)
70
+(use-package zenburn-theme :ensure t)
71
+(color-theme-initialize)
72
+(load-theme 'zenburn t)
73
+
32 74
 (use-package evil
33 75
   :ensure t
34 76
   :config
35 77
 
36
-  (define-key evil-normal-state-map " o" 'slime-selector)
37
-  (define-key evil-insert-state-map (kbd "TAB") 'company-complete)
38
-
78
+  (advice-add 'evil-delete-marks :after
79
+              (lambda (&rest args)
80
+                (evil-visual-mark-render)))
39 81
 
82
+  (define-key evil-normal-state-map " o" 'slime-selector)
83
+  (define-key evil-insert-state-map (kbd "TAB") 'company-indent-or-complete-common)
84
+  (evil-mode)
40 85
   (use-package  evil-paredit
41 86
     :ensure t
42 87
     :after paredit
43 88
     :config
44 89
     (evil-paredit-mode))
45 90
 
46
-  (use-package evil-numbers
47
-    :ensure t
48
-    :config
49
-    (global-set-key (kbd "C-c +") 'evil-numbers/inc-at-pt)
50
-    (global-set-key (kbd "C-c -") 'evil-numbers/dec-at-pt))
91
+
92
+  ;;(use-package evil-numbers
93
+  ;;  :ensure t
94
+  ;;  :config
95
+  ;;  (global-set-key (kbd "C-c +") 'evil-numbers/inc-at-pt)
96
+  ;;  (global-set-key (kbd "C-c -") 'evil-numbers/dec-at-pt))
51 97
 
52 98
   (use-package evil-surround
53 99
     :ensure t
... ...
@@ -60,26 +106,20 @@
60 106
     (global-evil-leader-mode)
61 107
     (evil-leader/set-leader ",")))
62 108
 
109
+(use-package emmet-mode
110
+  :ensure t
111
+  :config
112
+  (define-key evil-insert-state-map (kbd "C-c ,") 'emmet-expand-line)
113
+  )
114
+
63 115
 (use-package lisp-skeletons
64
-    :config
65
-    (add-hook 'skeleton-end-hook 'skeleton-make-markers)
66
-
67
-
68
-    (defun helm-generate-lisp-skeleton ()
69
-      (interactive)
70
-      (let ((skeletons '(("defunction" . skel-defun)
71
-                         ("defmacro" . skel-defmacro)
72
-                         ("defsystem" . skel-defsystem)
73
-                         ("defpackage" . skel-defpackage)
74
-                         ("defparameter" . skel-defparameter)
75
-                         ("defvar" . skel-defvar))))
76
-        (funcall (helm-comp-read "code template: " skeletons))
77
-        (evil-insert 1)))
78
-    
79
-    (define-key evil-insert-state-map (kbd "C-c j") 'skeleton-next-position)
80
-    (define-key evil-insert-state-map (kbd "C-c k") 'skeleton-prev-position)
81
-    (define-key evil-normal-state-map " g" 'helm-generate-lisp-skeleton)
82
-    (define-key evil-visual-state-map " g" 'helm-generate-lisp-skeleton))
116
+  :config
117
+  (add-hook 'skeleton-end-hook 'skeleton-make-markers)
118
+
119
+  (define-key evil-insert-state-map (kbd "C-c j") 'skeleton-next-position)
120
+  (define-key evil-insert-state-map (kbd "C-c k") 'skeleton-prev-position)
121
+  (define-key evil-normal-state-map " g" 'helm-generate-lisp-skeleton)
122
+  (define-key evil-visual-state-map " g" 'helm-generate-lisp-skeleton))
83 123
 
84 124
 ;;;;; INDENTATION SETUP  {{{
85 125
 (progn
... ...
@@ -96,68 +136,63 @@
96 136
 (setq browse-url-browser-function
97 137
       'eww-browse-url)
98 138
 
99
-;;;;; SLIME SETUP {{{
100
-(progn ;slime isn't loaded via use-package because quicklisp-helper keeps it uptodate
101
-  (load (expand-file-name "~/quicklisp/slime-helper.el"))
102
-
103
-  (when (and (boundp 'common-lisp-hyperspec-root)
104
-             (string-prefix-p "/" common-lisp-hyperspec-root))
105
-    (setq common-lisp-hyperspec-root
106
-          (concat "file://" common-lisp-hyperspec-root)))
107
-
108
-  ;; Replace "sbcl" with the path to your implementation
109
-  (setq inferior-lisp-program "~/sbcl/bin/sbcl")
110
-
111
-  (defun create-system-files ()
112
-    (interactive)
113
-    (mapcar (lambda (it) (save-buffer (find-file (format "%s.lisp" (cadr it)))))
114
-            (getf (cddar (read-from-string
115
-                          (buffer-substring (point)
116
-                                            (mark))))
117
-                  :components)))
118
-
119
-  (defun slime-ecl ()
120
-    (interactive)
121
-    (let ((inferior-lisp-program "ecl"))
122
-      (slime)))
123
-
124
-  (defun slime-cmucl ()
125
-    (interactive)
126
-    (let ((inferior-lisp-program "cmucl"))
127
-      (slime)))
128
-
129
-  (defun slime-sbcl ()
130
-    (interactive)
131
-    (let ((inferior-lisp-program "sbcl"))
132
-      (slime)))
133
-
134
-  (defun slime-ccl ()
135
-    (interactive)
136
-    (let ((inferior-lisp-program "ccl"))
137
-      (slime)))
138
-
139
-  (add-hook 'lisp-mode-hook
140
-            '(lambda ()
141
-               ;;(define-key evil-insert-state-map "^N" 'slime-fuzzy-indent-and-complete-symbol)
142
-               (unless (string= "*slime-scratch*" (buffer-name))
143
-                 (paredit-mode)
144
-                 (evil-paredit-mode))
145
-               (rainbow-delimiters-mode))) 
146
-  (setq slime-contribs
147
-        '(slime-fancy
148
-          slime-company
149
-          slime-macrostep
150
-          slime-trace-dialog
151
-          slime-mdot-fu)))
152
-
139
+ ;;;;; SLIME SETUP {{{
153 140
 (use-package slime-company
154 141
   :no-require t
155
-  :defer t
156 142
   :ensure t)
157 143
 
158
-;;;;; }}}
144
+(load (expand-file-name "~/quicklisp/slime-helper.el"))
145
+
146
+(run-with-idle-timer
147
+ 5 nil  ;slime isn't loaded via use-package because quicklisp-helper keeps it uptodate
148
+ (lambda ()
149
+
150
+   (when (and (boundp 'common-lisp-hyperspec-root)
151
+              (string-prefix-p "/" common-lisp-hyperspec-root))
152
+     (setq common-lisp-hyperspec-root
153
+           (concat "file://" common-lisp-hyperspec-root)))
154
+
155
+   ;; Replace "sbcl" with the path to your implementation
156
+   (setq inferior-lisp-program "~/sbcl/bin/sbcl")
157
+
158
+   (add-hook 'lisp-mode-hook
159
+             '(lambda ()
160
+                ;;(define-key evil-insert-state-map "^N" 'slime-fuzzy-indent-and-complete-symbol)
161
+                (unless (string= "*slime-scratch*" (buffer-name))
162
+                  (paredit-mode)
163
+                  (evil-paredit-mode))
164
+                (rainbow-delimiters-mode))) 
165
+   (setq slime-contribs
166
+         '(slime-fancy
167
+           slime-company
168
+           slime-macrostep
169
+           slime-trace-dialog
170
+           slime-mdot-fu))
171
+   
172
+
173
+   (modify-syntax-entry ?- "w" lisp-mode-syntax-table)
174
+   (modify-syntax-entry ?* "w" lisp-mode-syntax-table)
175
+   (modify-syntax-entry ?+ "w" lisp-mode-syntax-table)
176
+   (modify-syntax-entry ?! "w" lisp-mode-syntax-table)
177
+   (modify-syntax-entry ?$ "w" lisp-mode-syntax-table)
178
+   (modify-syntax-entry ?% "w" lisp-mode-syntax-table)
179
+   (modify-syntax-entry ?& "w" lisp-mode-syntax-table)
180
+   (modify-syntax-entry ?% "w" lisp-mode-syntax-table)
181
+   (modify-syntax-entry ?= "w" lisp-mode-syntax-table)
182
+   (modify-syntax-entry ?< "w" lisp-mode-syntax-table)
183
+   (modify-syntax-entry ?> "w" lisp-mode-syntax-table)
184
+   ;;(modify-syntax-entry ?@ "w" lisp-mode-syntax-table)
185
+
186
+   (modify-syntax-entry ?^ "w" lisp-mode-syntax-table)
187
+   (modify-syntax-entry ?_ "w" lisp-mode-syntax-table)
188
+   (modify-syntax-entry ?~ "w" lisp-mode-syntax-table)
189
+   (modify-syntax-entry ?. "w" lisp-mode-syntax-table)
190
+
191
+   ))
192
+
193
+ ;;;;; }}}
159 194
 (use-package company
160
-  :ensure t
195
+  :defer 5
161 196
   :config
162 197
   ;; keybindings
163 198
   (progn (define-key company-active-map (kbd "C-c h") 'company-quickhelp-manual-begin)
... ...
@@ -166,7 +201,7 @@
166 201
          (define-key company-active-map (kbd "{") (kbd "RET SPC {"))
167 202
          (define-key company-active-map (kbd "[") (kbd "RET [")))
168 203
 
169
-  (message "backends: %s" company-backends)
204
+  ;;(message "backends: %s" company-backends)
170 205
   (setq company-backends
171 206
         '(company-clang
172 207
           company-bbdb
... ...
@@ -184,14 +219,12 @@
184 219
           company-dabbrev))
185 220
   )
186 221
 
187
-;; NOTE: this must be here...
188
-(slime-setup)
189
-
190
-(global-company-mode 1)
191
-
192 222
 (use-package projectile
193 223
   :ensure t
194 224
   :config
225
+  (projectile-register-project-type
226
+   'lisp '("*.asd"))
227
+  
195 228
   (projectile-register-project-type
196 229
    'npm '("package.json")
197 230
    :compile "npm install"
... ...
@@ -199,87 +232,53 @@
199 232
    :run "npm start"
200 233
    :test-suffix ".spec"))
201 234
 
202
-(use-package sbt-mode
203
-  :ensure t
204
-  :pin melpa-stable)
205
-
206
-(use-package scala-mode
207
-  :ensure t
208
-  :pin melpa-stable)
209
-
210
-(use-package ensime
211
-  :ensure t
212
-  :pin melpa-stable)
213
-
214
-(use-package intero
215
-  :ensure t)
216
-
217
-;; (use-package jdee
218
-;;   :ensure t)
219
-
220
-(use-package mvn
221
-  :ensure t)
222
-
223
-(use-package css-eldoc
224
-  :ensure t)
225
-
226
-(use-package ag
227
-  :ensure t)
228
-
229
-(use-package evil-vimish-fold
230
-  :ensure t
231
-  :config
232
-  (evil-vimish-fold-mode 1))
233
-
234
-(use-package zenburn-theme
235
-  :ensure t)
236
-
237
-(use-package zeal-at-point
238
-  :ensure t)
239
-
240
-(use-package rainbow-delimiters
241
-  :ensure t)
242
-
243
-(use-package tabbar
244
-  :ensure t)
245
-
246
-(use-package helm
247
-  :ensure t)
235
+(defmacro ensure-use-packages (&rest packages)
236
+  (list* 'progn
237
+         (mapcar (op `(use-package ,_
238
+                        :ensure t))
239
+                 packages)))
240
+
241
+(use-package css-eldoc :ensure t)
242
+(use-package ag :ensure t)
243
+(use-package rainbow-delimiters :ensure t)
244
+(use-package helm :ensure t)
245
+(use-package helm-projectile :ensure t)
246
+(use-package eldoc-eval :ensure t)
247
+(use-package csv-mode :ensure t)
248
+(use-package yaml-mode :ensure t)
249
+(use-package web-mode :ensure t)
250
+(use-package vue-mode :ensure t)
251
+(use-package scss-mode :ensure t)
252
+(use-package markdown-mode :ensure t)
253
+(use-package magit :ensure t :defer 2)
254
+(use-package highlight-parentheses :ensure t)
255
+(use-package helm-projectile :ensure t)
256
+(use-package helm-ls-git :ensure t)
257
+(use-package helm-css-scss :ensure t)
258
+;;(use-package ac-js2 :ensure t)
259
+;;(use-package helm-cider :ensure t :defer 5)
260
+(use-package helm-ag-r :ensure t)
261
+(use-package helm-ag :ensure t)
262
+(use-package project-explorer :ensure t)
248 263
 
249
-(use-package helm-projectile
250
-  :ensure t)
251 264
 
252
-(use-package evil-visual-mark-mode
253
-  :ensure t)
254
-
255
-(advice-add 'evil-delete-marks :after
256
-            (lambda (&rest args)
257
-              (evil-visual-mark-render)))
265
+(progn ; helm
266
+  (require 'helm-config)
267
+  (helm-mode)
268
+  (global-set-key (kbd "C-x C-f") 'helm-find-files)
269
+  (define-key evil-normal-state-map " f" 'helm-projectile)
270
+  (define-key evil-normal-state-map " j" 'helm-buffers-list)
271
+  (global-set-key (kbd "M-x") 'helm-M-x))
258 272
 
259
-(use-package evil-nerd-commenter
260
-  :ensure t
261
-  :config
262
-  (evilnc-default-hotkeys t))
263 273
 
264 274
 (use-package paredit
265 275
   :ensure t
266 276
   :config
267
-  (defun paredit-wiggle-back ()
268
-    (paredit-forward)
269
-    (paredit-backward))
270
-
271
-  (defmacro defparedit-wrapper (name invoked-wrapper)
272
-    `(defun ,name ()
273
-       (interactive)
274
-       (paredit-wiggle-back)
275
-       (,invoked-wrapper)))
276
-
277 277
   (defparedit-wrapper back-then-wrap paredit-wrap-sexp)
278 278
   (defparedit-wrapper back-then-wrap-square paredit-wrap-square)
279 279
   (defparedit-wrapper back-then-wrap-curly paredit-wrap-curly)
280 280
   (defparedit-wrapper back-then-wrap-angled paredit-wrap-angled)
281 281
   (defparedit-wrapper back-then-wrap-doublequote paredit-meta-doublequote)
282
-
283 282
   (define-key evil-normal-state-map ",W" 'back-then-wrap)
284 283
   (define-key evil-normal-state-map ",w]" 'back-then-wrap-square)
285 284
   (define-key evil-normal-state-map ",w}" 'back-then-wrap-curly)
... ...
@@ -297,284 +296,28 @@
297 296
   (define-key evil-normal-state-map ",." 'paredit-forward-barf-sexp) 
298 297
   (define-key evil-normal-state-map ",~" 'paredit-convolute-sexp))
299 298
 
300
-(use-package eldoc-eval
301
-  :ensure t)
302
-
303 299
 (use-package editorconfig
304 300
   :ensure t
305 301
   :config
306 302
   (editorconfig-mode 1))
307 303
 
308
-(use-package csv-mode
309
-  :ensure t)
310
-
311
-(use-package color-theme
312
-  :ensure t)
313
-
314
-(use-package ansible
315
-  :ensure t)
316
-
317
-(use-package alect-themes
318
-  :ensure t)
319
-
320
-(use-package ac-js2
321
-  :ensure t)
322
-
323
-(use-package yaml-mode
324
-  :ensure t)
325
-
326
-(use-package web-mode
327
-  :ensure t)
328
-
329
-(use-package vue-mode
330
-  :ensure t)
331
-
332
-(use-package typescript-mode
333
-  :ensure t)
334
-
335
-(use-package scss-mode
336
-  :ensure t)
337
-
338
-(use-package rust-mode
339
-  :ensure t)
340
-
341
-(use-package  markdown-mode
342
-  :ensure t)
343
-
344
-(use-package magit
345
-  :ensure t)
346
-
347
-(use-package highlight-parentheses
348
-  :ensure t)
349
-
350
-(use-package helm-projectile
351
-  :ensure t)
352
-
353
-(use-package helm-ls-git
354
-  :ensure t)
355
-
356
-;;(use-package helm-git
357
-;;  :ensure t)
358
-
359
-(use-package helm-css-scss
360
-  :ensure t)
361
-
362
-(use-package helm-cider
363
-  :ensure t)
364
-
365
-(use-package helm-ag-r
366
-  :ensure t)
367
-
368
-(use-package helm-ag
369
-  :ensure t)
370
-
371
-(use-package emmet-mode
372
-  :ensure t
373
-  :config
374
-  (define-key evil-insert-state-map (kbd "C-c ,") 'emmet-expand-line)
375
-  )
376
-
377
-(use-package project-explorer
378
-  :ensure t
379
-  )
380
-
381
-(use-package ggtags
382
-  :ensure t
383
-  :config
384
-  (ggtags-mode 1)
385
-  (add-hook 'c-mode-common-hook
386
-	    (lambda ()
387
-	      (when (derived-mode-p 'c-mode 'c++-mode 'java-mode 'asm-mode)
388
-		(ggtags-mode 1)))))
389
-
390
-
391
-
392
-(use-package pollen-mode
393
-  :config
394
-  (defun insert-lozenge ()
395
-    (interactive)
396
-    (insert-char 9674))
397
-  (define-key evil-insert-state-map (kbd "C-c C-l") 'insert-lozenge))
398
-
399
-(progn ; helm
400
-  (require 'helm-config)
401
-  (helm-mode)
402
-  (global-set-key (kbd "C-x C-f") 'helm-find-files)
403
-  (define-key evil-normal-state-map " f" 'helm-projectile)
404
-  (define-key evil-normal-state-map " j" 'helm-buffers-list)
405
-  (global-set-key (kbd "M-x") 'helm-M-x))
406
-
407
-(require 'js2-mode)
408
-
409
-(require 'projectile)
410
-(projectile-mode)
411
-
412
-
413
-
414
-(add-hook 'after-init-hook
415
-	  (lambda ()
416
-	    (unless (server-running-p)
417
-	      (server-start))
418
-	    (evil-mode)
419
-	    (paredit-mode)
420
-	    (global-company-mode)
421
-	    (global-linum-mode)))
422
-
423
-(progn ; linum
424
-  (setq linum-format "%5d\u2502"))
425
-
426
-(require 'evil-numbers)
427
-
428 304
 (define-key evil-normal-state-map "ZZ" 'save-buffer)
429 305
 
430
-(define-key evil-normal-state-map ",zz" 'zeal-at-point)
431
-
432
-(modify-syntax-entry ?_ "w" js-mode-syntax-table)
433
-(modify-syntax-entry ?- "w" lisp-mode-syntax-table)
434
-(modify-syntax-entry ?* "w" lisp-mode-syntax-table)
435
-(modify-syntax-entry ?+ "w" lisp-mode-syntax-table)
436
-(modify-syntax-entry ?! "w" lisp-mode-syntax-table)
437
-(modify-syntax-entry ?$ "w" lisp-mode-syntax-table)
438
-(modify-syntax-entry ?% "w" lisp-mode-syntax-table)
439
-(modify-syntax-entry ?& "w" lisp-mode-syntax-table)
440
-(modify-syntax-entry ?% "w" lisp-mode-syntax-table)
441
-(modify-syntax-entry ?= "w" lisp-mode-syntax-table)
442
-(modify-syntax-entry ?< "w" lisp-mode-syntax-table)
443
-(modify-syntax-entry ?> "w" lisp-mode-syntax-table)
444
-(modify-syntax-entry ?@ "w" lisp-mode-syntax-table)
445
-(modify-syntax-entry ?[ "w" lisp-mode-syntax-table)
446
-(modify-syntax-entry ?] "w" lisp-mode-syntax-table)
447
-(modify-syntax-entry ?^ "w" lisp-mode-syntax-table)
448
-(modify-syntax-entry ?_ "w" lisp-mode-syntax-table)
449
-(modify-syntax-entry ?~ "w" lisp-mode-syntax-table)
450
-(modify-syntax-entry ?{ "w" lisp-mode-syntax-table)
451
-(modify-syntax-entry ?} "w" lisp-mode-syntax-table)
452
-(modify-syntax-entry ?. "w" lisp-mode-syntax-table)
306
+;;(modify-syntax-entry ?_ "w" js-mode-syntax-table)
453 307
 
454 308
 (modify-syntax-entry ?- "w" emacs-lisp-mode-syntax-table)
455 309
 (modify-syntax-entry ?_ "w" emacs-lisp-mode-syntax-table)
456 310
 
457
-(let ((default-directory  "~/.emacs.d/lisp/"))
458
-  (make-directory default-directory t)
459
-  (normal-top-level-add-subdirs-to-load-path))
460
-
461
-
462
-
463
-(setq erc-hide-list '("JOIN" "PART" "QUIT"))
464
-
465
-;; (defun znc-erc ()
466
-;;   (interactive)
467
-;;   (erc-ssl :server "localhost" :port 6697 :nick "edwlan/freenode" :password "t31ch3rtb"))
468
-
469
-(add-to-list 'auto-mode-alist '("\\.cljs\\.hl\\'" . clojurescript-mode))
470
-
471
-(add-hook 'ruby-mode-hook
472
-	  '(lambda ()
473
-	     (eldoc-mode)
474
-	     (robe-mode)))
475
-
476
-
477
-(add-hook 'clojure-mode-hook
478
-	  '(lambda ()
479
-	     ;; Hoplon functions and macros
480
-	     (paredit-mode)
481
-	     (define-key evil-insert-state-map "^N" 'helm-cider-apropos)
482
-	     (dolist (pair '((page . 'defun)
483
-			     (loop-tpl . 'defun)
484
-			     (if-tpl . '1)
485
-			     (for-tpl . '1)
486
-			     (case-tpl . '1)
487
-			     (cond-tpl . 'defun)))
488
-	       (put-clojure-indent (car pair)
489
-				   (car (last pair))))))
490
-
491
-(setq tls-program '("openssl s_client -connect %h:%p -no_ssl2 -ign_eof"))
492
-
493
-(global-auto-revert-mode t)
494
-
495
- ;;; Use auto-complete for ensime
496
-
497
-(defun scala/enable-eldoc ()
498
-  "Show error message or type name at point by Eldoc."
499
-  (setq-local eldoc-documentation-function
500
-	      #'(lambda ()
501
-		  (when (ensime-connected-p)
502
-		    (let ((err (ensime-print-errors-at-point)))
503
-		      (or (and err (not (string= err "")) err)
504
-			  (ensime-print-type-at-point))))))
505
-  (eldoc-mode +1))
506
-
507
-(defun scala/completing-dot-company ()
508
-  (cond (company-backend
509
-	 (company-complete-selection)
510
-	 (scala/completing-dot))
511
-	(t
512
-	 (insert ".")
513
-	 (company-complete))))
514
-
515
-(defun scala/completing-dot-ac ()
516
-  (insert ".")
517
-  (ac-trigger-key-command t))
518
-
519
-;; Interactive commands
520
-
521
-(defun scala/completing-dot ()
522
-  "Insert a period and show company completions."
523
-  (interactive "*")
524
-  (eval-and-compile (require 'ensime))
525
-  (eval-and-compile (require 's))
526
-  (when (s-matches? (rx (+ (not space)))
527
-		    (buffer-substring (line-beginning-position) (point)))
528
-    (delete-horizontal-space t))
529
-  (cond ((not (and (ensime-connected-p) ensime-completion-style))
530
-	 (insert "."))
531
-	((eq ensime-completion-style 'company)
532
-	 (scala/completing-dot-company))
533
-	((eq ensime-completion-style 'auto-complete)
534
-	 (scala/completing-dot-ac))))
535
-
536
-;; Initialization
537
-(add-hook 'ensime-mode-hook #'scala/enable-eldoc)
538
-(add-hook 'scala-mode-hook 'ensime-scala-mode-hook)
539
-(add-hook 'scala-mode-hook 'flycheck-mode)
540
-(add-hook 'haskell-mode-hook 'intero-mode)
541
-
542
-(add-hook 'c-mode-common-hook
543
-	  (lambda ()
544
-	    (when (derived-mode-p 'c-mode 'c++-mode 'java-mode)
545
-	      (semantic-mode 1)
546
-	      
547
-	      (global-semanticdb-minor-mode 1)
548
-	      (global-semantic-idle-scheduler-mode 1)
549
-	      (global-semantic-stickyfunc-mode 1)
550
-	      
551
-	      (helm-gtags-mode)
552
-	      (ggtags-mode 1))))
553
-
554
-(setq company-backends (delete 'company-semantic company-backends))
555
-
556
-(defun alexott/cedet-hook ()
557
-  (local-set-key "\C-c\C-j" 'semantic-ia-fast-jump)
558
-  (local-set-key "\C-c\C-s" 'semantic-ia-show-summary))
559
-
560
-(add-hook 'c-mode-common-hook 'alexott/cedet-hook)
561
-(add-hook 'c-mode-hook 'alexott/cedet-hook)
562
-(add-hook 'c++-mode-hook 'alexott/cedet-hook)
563
-
564
-(defun set-exec-path-from-shell-PATH ()
565
-  "Set up Emacs' `exec-path' and PATH environment variable to match that used by the user's shell.
566
- 
567
- This is particularly useful under Mac OSX, where GUI apps are not started from a shell."
568
-  (interactive)
569
-  (let ((path-from-shell (replace-regexp-in-string "[ \t\n]*$" "" (shell-command-to-string "$SHELL --login -i -c 'echo $PATH'"))))
570
-    (setenv "PATH" path-from-shell)
571
-    (setq exec-path (split-string path-from-shell path-separator))))
572
-(set-exec-path-from-shell-PATH)
573
-
574
-(require 'ede)
575
-(global-ede-mode)
311
+;;)
576 312
 
577 313
 (setq custom-file "~/.emacs.d/custom.el")
578 314
 (load-file custom-file)
579 315
 
316
+(setq gc-cons-threshold (* 100 1024))
317
+
318
+(setq fwoar.is-ordinary (not (string= invocation-name "EmacsNotes")))
580 319
 
320
+(unless fwoar.is-ordinary
321
+  (setq with-editor-emacsclient-executable "/usr/local/bin/emacsclient")
322
+  (require 'cjpad)
323
+  (find-file "~/notes.org"))
581 324
new file mode 100644
... ...
@@ -0,0 +1,82 @@
1
+;;; cjpad.el --- Skeletons for interacting with cjpad
2
+
3
+;; Copyright (C) 2017 Edward Langley
4
+
5
+;; Author: Edward Langley <fwoar@elangley.org>
6
+;; Keywords: cjpad
7
+;; Version: 0.0.1
8
+
9
+;; This program is free software; you can redistribute it and/or modify
10
+;; it under the terms of the GNU General Public License as published by
11
+;; the Free Software Foundation, either version 3 of the License, or
12
+;; (at your option) any later version.
13
+
14
+;; This program is distributed in the hope that it will be useful,
15
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
+;; GNU General Public License for more details.
18
+
19
+;; You should have received a copy of the GNU General Public License
20
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
21
+
22
+;;; Commentary:
23
+
24
+;; Put a description of the package here
25
+
26
+;;; Code:
27
+
28
+;; code goes here
29
+
30
+(defun extract-pad-name (pad-url)
31
+  (replace-regexp-in-string "^https?://cjpad.cj.com/\\([^/]+\\)/?$"
32
+                            "\\1"
33
+                            pad-url))
34
+
35
+(defun get-pad-url (name)
36
+  (format "http://cjpad.cj.com/ep/pad/export/%s/latest?format=txt"
37
+          name))
38
+
39
+(defun convert-to-export (pad-url)
40
+  (format "http://cjpad.cj.com/ep/pad/export/%s/latest?format=txt"
41
+          (extract-pad-name pad-url)))
42
+
43
+(defvar *cjpad-exports* "~/cjpad-imports/")
44
+
45
+(defun get-cjpad (pad-name)
46
+  (interactive "M")
47
+  (let ((file-name (format "%s%s" *cjpad-exports* pad-name))
48
+        (pad-url (get-pad-url pad-name)))
49
+    (with-current-buffer (url-retrieve-synchronously (get-pad-url pad-name))
50
+      (write-region nil nil file-name))
51
+    (find-file file-name)))
52
+
53
+(defun import-cjpad (s e)
54
+  (interactive "r")
55
+  (message "=============================")
56
+  (let* ((pad-url (buffer-substring s e)))
57
+    (get-cjpad (extract-pad-name pad-url))
58
+    (save-excursion
59
+      (end-of-line)
60
+      (insert " [" file-name "]")
61
+      (message "foo")))
62
+  (message "============================="))
63
+
64
+(defun update-cjpad-file (fn)
65
+  (interactive "F")
66
+  (message fn)
67
+  (let* ((pad-name (file-name-base fn))
68
+         (pad-url (get-pad-url pad-name))
69
+         (file-name (format "%s%s" *cjpad-exports* pad-name)))
70
+    (with-current-buffer (url-retrieve-synchronously pad-url)
71
+      (write-region nil nil file-name))))
72
+
73
+(defun update-cjpad ()
74
+  (interactive)
75
+  (update-cjpad-file (buffer-file-name (current-buffer))))
76
+
77
+(defun browse-cjpad ()
78
+  (interactive)
79
+  (browse-url (format "http://cjpad.cj.com/%s"
80
+                      (file-name-base (buffer-file-name (current-buffer))))))
81
+
82
+(provide 'cjpad)
0 83
new file mode 100644
... ...
@@ -0,0 +1,106 @@
1
+(require 'cl)
2
+
3
+(defun op--collect-args (body)
4
+  (cl-flet ((walker (body &optional args)
5
+                 (if (null body)
6
+                     args
7
+                   (if (symbolp body)
8
+                       (when (eql ?\_ (elt (symbol-name body) 0))
9
+                         (cons body args))
10
+                     (if (listp body)
11
+                         (append (op--collect-args (car body))
12
+                                 (op--collect-args (cdr body))
13
+                                 ))))))
14
+    (sort (walker body)
15
+          (lambda (a b)
16
+            (< (string-to-number (subseq (symbol-name a) 1))
17
+               (string-to-number (subseq (symbol-name b) 1)))))))
18
+
19
+(defmacro op (&rest body)
20
+  `(lambda ,(op--collect-args body)
21
+     ,@body))
22
+
23
+
24
+(defun blank-line-p ()
25
+  (= (current-indentation)
26
+     (- (line-end-position) (line-beginning-position))))
27
+
28
+(defun helm-generate-lisp-skeleton ()
29
+  (interactive)
30
+  (let ((skeletons '(("defunction" . skel-defun)
31
+                     ("defmacro" . skel-defmacro)
32
+                     ("defsystem" . skel-defsystem)
33
+                     ("defpackage" . skel-defpackage)
34
+                     ("defparameter" . skel-defparameter)
35
+                     ("defvar" . skel-defvar))))
36
+    (funcall (helm-comp-read "code template: " skeletons))
37
+    (evil-insert 1)))
38
+
39
+(defun create-system-files ()
40
+    (interactive)
41
+    (mapcar (lambda (it) (save-buffer (find-file (format "%s.lisp" (cadr it)))))
42
+            (getf (cddar (read-from-string
43
+                          (buffer-substring (point)
44
+                                            (mark))))
45
+                  :components)))
46
+
47
+(defun slime-ecl ()
48
+  (interactive)
49
+  (let ((inferior-lisp-program "ecl"))
50
+    (slime)))
51
+
52
+(defun slime-cmucl ()
53
+  (interactive)
54
+  (let ((inferior-lisp-program "cmucl"))
55
+    (slime)))
56
+
57
+(defun slime-sbcl ()
58
+  (interactive)
59
+  (let ((inferior-lisp-program "sbcl"))
60
+    (slime)))
61
+
62
+(defun slime-ccl ()
63
+  (interactive)
64
+  (let ((inferior-lisp-program "ccl"))
65
+    (slime)))
66
+
67
+(defun find-use-clause (current-form)
68
+  (when current-form
69
+    (destructuring-bind (discriminator . packages) current-form
70
+      (case discriminator
71
+        (:use (remove-if (op (or (eql :cl _)))
72
+                         (cdr current-form)))
73
+        (defpackage (find-use-clause
74
+                     (find-if (lambda (f)
75
+                                (and (listp f)
76
+                                     (eql (car f) :use)))
77
+                              '(defpackage :tracking-sim (:use :cl :alexandria :serapeum) (:export)))))))))
78
+
79
+(defun load-package-uses ()
80
+  (interactive)
81
+  (slime-eval-async `(ql:quickload ',(find-use-clause (list-at-point)))))
82
+
83
+(defun paredit-wiggle-back ()
84
+  (paredit-forward)
85
+  (paredit-backward))
86
+
87
+(defmacro defparedit-wrapper (name invoked-wrapper)
88
+  `(defun ,name ()
89
+     (interactive)
90
+     (paredit-wiggle-back)
91
+     (,invoked-wrapper)))
92
+
93
+(defun set-exec-path-from-shell-PATH ()
94
+  "Set up Emacs' `exec-path' and PATH environment variable to match
95
+that used by the user's shell.
96
+
97
+  This is particularly useful under Mac OSX, where GUI apps are not
98
+started from a shell."
99
+  (interactive)
100
+  (let ((path-from-shell
101
+         (replace-regexp-in-string "[ \t\n]*$" ""
102
+                                   (shell-command-to-string
103
+                                    "zsh -c 'source ~/.zsh.d/dependencies/utils.zsh;source ~/.zsh.d/dependencies/path-setup.zsh;echo $PATH'")
104
+)))
105
+    (setenv "PATH" path-from-shell)
106
+    (setq exec-path (split-string path-from-shell path-separator))))
... ...
@@ -1,3 +1,4 @@
1
+#:depends-on:path-setup
1 2
 #:depends-on:utils
2 3
 #:depends-on:nix
3 4
 #:depends-on:autoloads
... ...
@@ -6,7 +7,8 @@
6 7
 #:depends-on:editor-setup
7 8
 
8 9
 # echo "begin zshrc"
9
-echo "shell session started for $USER on $TTY at `date`" | tee /dev/stderr | logger
10
+
11
+interactive_echo "shell session started for $USER on $TTY at `date`" | tee /dev/stderr | logger
10 12
 
11 13
 source $HOME/.localzshrc.sh
12 14
 
... ...
@@ -1,5 +1,15 @@
1 1
 GIT_DEBUG=0
2 2
 
3
+git-update-repos() {
4
+  find . -name .git | (
5
+    while read -r repo; do
6
+      printf "---\n$repo\n";
7
+      git --work-tree="${repo%/*}" --git-dir="$repo" pull --ff-only ;
8
+      printf "\n\n"
9
+    done
10
+  )
11
+}
12
+
3 13
 git-ub() {
4 14
   git stash || exit 1
5 15
   git pull --rebase
... ...
@@ -1,6 +1,7 @@
1 1
 #:depends-on:todo
2 2
 #:depends-on:key-bindings
3 3
 #:depends-on:named-directories
4
+
4 5
 cat <<'EOP'
5 6
              :
6 7
     `.       ;        .'
... ...
@@ -1,6 +1,7 @@
1
+#:depends-on:utils
1 2
 export GNU_PREFIX=''
2 3
 platform="$(uname -s)"
3
-echo the platform is "$platform"
4
+interactive_echo the platform is "$platform"
4 5
 if [[ $platform == 'Darwin' ]] && command -v gls 2>&1 >/dev/null; then
5 6
 	GNU_PREFIX='g'
6 7
 else
... ...
@@ -1,4 +1,9 @@
1
-#:depends-on:foobar
1
+interactive_echo() {
2
+  case "$-" in
3
+    *i*) echo $*
4
+  esac
5
+}
6
+
2 7
 add_exe_path() {
3 8
   if [[ -d $1 ]]; then
4 9
     export PATH="$PATH:$1"