git.fiddlerwoaroof.com
Browse code

chore: cider configuration gets its own file

Ed Langley authored on 07/12/2019 07:33:39
Showing 3 changed files
... ...
@@ -310,109 +310,16 @@ With a prefix ARG invalidates the cache first."
310 310
   (print f)
311 311
   f)
312 312
 
313
-(cl-defmethod fwoar--find-system (&context (major-mode clojure-mode))
314
-  (let ((systems (directory-files
315
-                  (locate-dominating-file default-directory
316
-                                          (lambda (n)
317
-                                            (or (directory-files n nil "project.clj")
318
-                                                (directory-files n nil "build.boot")
319
-                                                (directory-files n nil "deps.edn")
320
-                                                (directory-files n nil "shadow-cljs.edn"))))
321
-                  t "^\\(project.clj\\|build.boot\\|deps.edn\\|shadow-cljs.edn\\)$")))
322
-    (find-file (if (not (null (cdr systems)))
323
-                   (helm-comp-read "system:" systems)
324
-                 (car systems)))))
325
-
326 313
 (cl-defgeneric fwoar--pl-selector ()
327
-  (:method ()
328
-           (slime-selector))
329
-
330
-  (:method (&context (major-mode clojure-mode))
331
-           (cider-selector))
332
-  (:method (&context (projectile-project-type (eql :clojure)))
333
-           (cider-selector))
334
-  (:method (&context (major-mode cider-repl-mode))
335
-           (cider-selector)))
314
+  (:method () (slime-selector)))
315
+(cl-defgeneric fwoar--find-system ())
336 316
 
337 317
 (defun fwoar-pl-selector ()
338 318
   (interactive)
339 319
   (fwoar--pl-selector))
340 320
 (define-key evil-normal-state-map " o" 'fwoar-pl-selector)
341 321
 
342
-
343
-(use-package cider
344
-  :ensure t
345
-  :config
346
-  (require 'cider-selector)
347
-  (define-key evil-normal-state-map " t" 'cider-test-run-ns-tests)
348
-  (evil-define-key 'normal clojure-mode-map " '" 'helm-cider-apropos)
349
-
350
-  (def-cider-selector-method ?S "find clojure project file"
351
-    (fwoar--find-system))
352
-
353
-  (add-hook 'cider-mode-hook
354
-            (lambda ()
355
-              (flycheck-mode)
356
-              (rainbow-delimiters-mode 1)
357
-              (evil-smartparens-mode 1)
358
-              (smartparens-strict-mode 1)
359
-              (aggressive-indent-mode 1)
360
-              (helm-cider-mode 1)
361
-              (cider-company-enable-fuzzy-completion)))
362
-
363
-  (add-hook 'cider-repl-mode-hook
364
-            (lambda ()
365
-              (rainbow-delimiters-mode 1)
366
-              (evil-smartparens-mode 1)
367
-              (smartparens-strict-mode 1)
368
-              (aggressive-indent-mode 0)
369
-              (helm-cider-mode 1)
370
-              (cider-company-enable-fuzzy-completion)))
371
-
372
-  (modify-syntax-entry ?_ "w" clojure-mode-syntax-table)
373
-  (modify-syntax-entry ?- "w" clojure-mode-syntax-table)
374
-  (modify-syntax-entry ?~ "w" clojure-mode-syntax-table)
375
-  (modify-syntax-entry ?. "w" clojure-mode-syntax-table)
376
-
377
-  (define-key cider-repl-mode-map (kbd "C-c M-o") 'cider-repl-clear-buffer)
378
-  (define-key cider-repl-mode-map (kbd "C-c C-o") 'cider-repl-clear-output)
379
-  (setq cider-save-file-on-load t
380
-        cider-repl-history-file "~/.emacs.d/cider-history.clj")
381
-
382
-  (defun cider-eval-expression-at-point-in-repl ()
383
-    (interactive)
384
-    (let ((form (cider-defun-at-point)))
385
-      ;; Strip excess whitespace
386
-      (while (string-match "\\`\s+\\|\n+\\'" form)
387
-        (setq form (replace-match "" t t form)))
388
-      (with-current-buffer (cider-current-repl nil t)
389
-        (let ((fw/window (get-buffer-window)))
390
-          (with-selected-window fw/window
391
-            (end-of-buffer)
392
-            (insert form)
393
-            (cider-repl-return)
394
-            (end-of-buffer))))))
395
-
396
-  (define-key cider-mode-map
397
-    (kbd "C-c C-j") 'cider-eval-expression-at-point-in-repl)
398
-
399
-  ;; https://github.com/clojure-emacs/cider/issues/2435
400
-  (defun cider--gather-session-params (session)
401
-    "Gather all params for a SESSION."
402
-    (let (params)
403
-      (dolist (repl (cdr session))
404
-        (when (buffer-name repl)
405
-          (setq params (cider--gather-connect-params params repl))))
406
-      (when-let* ((server (cider--session-server session)))
407
-        (setq params (cider--gather-connect-params params server)))
408
-      params))
409
-
410
-  )
411
-
412
-(use-package flycheck-clj-kondo
413
-  :ensure t)
414
-
415
-
322
+(load-package-configuration 'cider)
416 323
 
417 324
 (use-package imenu
418 325
   :config
... ...
@@ -475,8 +382,6 @@ With a prefix ARG invalidates the cache first."
475 382
 
476 383
 (use-package helm-rg :ensure t)
477 384
 
478
-(use-package helm-cider :ensure t)
479
-
480 385
 (use-package helm-css-scss :ensure t)
481 386
 
482 387
 (use-package helm-ls-git :ensure t)
... ...
@@ -496,18 +401,26 @@ With a prefix ARG invalidates the cache first."
496 401
   ;;(magit-define-popup-action 'magit-dispatch-popup ?j "Browse remote" 'browse-at-remote)
497 402
   'magit-dispatch)
498 403
 
499
-(defvar *fwoar-git-repos*
500
-  (file-name-as-directory
501
-   (expand-file-name (car (file-expand-wildcards "~/git*_repos"))
502
-                     "~")))
503
-
504
-(defun fwoar-git-repo (name ssh-remote http-remote)
505
-  (let ((dir-name (file-name-as-directory (expand-file-name name *fwoar-git-repos*))))
506
-    (unless (file-exists-p dir-name)
507
-      (ecase fwoar-git-mode
508
-        (:ssh (magit-run-git-with-input "clone" ssh-remote dir-name))
509
-        (:http (magit-run-git-with-input "clone" http-remote dir-name))))
510
-    dir-name))
404
+(use-package browse-at-remote
405
+  :after magit
406
+  :ensure t
407
+  :config (push (cons "gitlab.cj.com" "gitlab")
408
+                browse-at-remote-remote-type-domains))
409
+
410
+(eval-and-compile
411
+  (defvar *fwoar-git-repos*
412
+    (file-name-as-directory
413
+     (expand-file-name (car (file-expand-wildcards "~/git*_repos"))
414
+                       "~"))))
415
+
416
+(eval-and-compile
417
+  (defun fwoar-git-repo (name ssh-remote http-remote)
418
+    (let ((dir-name (file-name-as-directory (expand-file-name name *fwoar-git-repos*))))
419
+      (unless (file-exists-p dir-name)
420
+        (ecase fwoar-git-mode
421
+          (:ssh (magit-run-git-with-input "clone" ssh-remote dir-name))
422
+          (:http (magit-run-git-with-input "clone" http-remote dir-name))))
423
+      dir-name)))
511 424
 
512 425
 (defvar *dotfiles-repo*
513 426
   (fwoar-git-repo "dotfiles"
514 427
new file mode 100644
... ...
@@ -0,0 +1,96 @@
1
+(defun fwoar/cider-hook-base ()
2
+  (flycheck-mode)
3
+  (rainbow-delimiters-mode 1)
4
+  (evil-smartparens-mode 1)
5
+  (smartparens-strict-mode 1)
6
+  (helm-cider-mode 1)
7
+  (cider-company-enable-fuzzy-completion))
8
+(defun fwoar/cider-hook ()
9
+  (fwoar/cider-hook-base)
10
+  (aggressive-indent-mode 1))
11
+(defun fwoar/cider-repl-hook ()
12
+  (fwoar/cider-hook-base)
13
+  (aggressive-indent-mode 0))
14
+
15
+(defun fwoar/cider-eval-expression-at-point-in-repl ()
16
+  (interactive)
17
+  (let ((form (cider-defun-at-point)))
18
+    ;; Strip excess whitespace
19
+    (while (string-match "\\`\s+\\|\n+\\'" form)
20
+      (setq form (replace-match "" t t form)))
21
+    (with-current-buffer (cider-current-repl nil t)
22
+      (let ((fw/window (get-buffer-window)))
23
+        (with-selected-window fw/window
24
+          (end-of-buffer)
25
+          (insert form)
26
+          (cider-repl-return)
27
+          (end-of-buffer))))))
28
+
29
+(use-package cider
30
+  :ensure t
31
+  :config
32
+  (require 'cider-selector)
33
+  (define-key evil-normal-state-map " t" 'cider-test-run-ns-tests)
34
+  (evil-define-key 'normal clojure-mode-map " '" 'helm-cider-apropos)
35
+
36
+  (def-cider-selector-method ?S "find clojure project file"
37
+    (fwoar--find-system))
38
+
39
+  (add-hook 'cider-mode-hook 'fwoar/cider-hook)
40
+  (add-hook 'cider-repl-mode-hook 'fwoar/cider-repl-hook)
41
+
42
+  (modify-syntax-entry ?: "w" clojure-mode-syntax-table)
43
+  (modify-syntax-entry ?_ "w" clojure-mode-syntax-table)
44
+  (modify-syntax-entry ?- "w" clojure-mode-syntax-table)
45
+  (modify-syntax-entry ?~ "w" clojure-mode-syntax-table)
46
+  (modify-syntax-entry ?. "w" clojure-mode-syntax-table)
47
+
48
+  (define-key cider-repl-mode-map (kbd "C-c M-o") 'cider-repl-clear-buffer)
49
+  (define-key cider-repl-mode-map (kbd "C-c C-o") 'cider-repl-clear-output)
50
+  (setq cider-save-file-on-load t
51
+        cider-repl-history-file "~/.emacs.d/cider-history.clj")
52
+
53
+  (define-key cider-mode-map
54
+    (kbd "C-c C-j") 'fwoar/cider-eval-expression-at-point-in-repl))
55
+
56
+(use-package clj-refactor
57
+  :after cider
58
+  :ensure t
59
+  :config
60
+  (evil-define-key 'normal clojure-mode-map (kbd "SPC r") 'hydra-cljr-toplevel-form-menu/body))
61
+
62
+
63
+(use-package helm-cider
64
+  :after cider helm
65
+  :ensure t)
66
+
67
+(use-package flycheck-clj-kondo
68
+  :after flycheck
69
+  :ensure t)
70
+
71
+
72
+(defun find-clojure-project-file ()
73
+  (let ((systems (directory-files
74
+                  (locate-dominating-file default-directory
75
+                                          (lambda (n)
76
+                                            (or (directory-files n nil "project.clj")
77
+                                                (directory-files n nil "build.boot")
78
+                                                (directory-files n nil "deps.edn")
79
+                                                (directory-files n nil "shadow-cljs.edn"))))
80
+                  t "^\\(project.clj\\|build.boot\\|deps.edn\\|shadow-cljs.edn\\)$")))
81
+    (find-file (if (not (null (cdr systems)))
82
+                   (helm-comp-read "system:" systems)
83
+                 (car systems)))))
84
+
85
+(cl-defmethod fwoar--find-system (&context (major-mode (derived-mode clojure-mode)))
86
+  (find-clojure-project-file))
87
+
88
+(cl-defmethod fwoar--find-system (&context (major-mode (derived-mode cider-repl-mode)))
89
+  (find-clojure-project-file))
90
+
91
+(defmethod fwoar--pl-selector (&context (major-mode clojure-mode))
92
+  (cider-selector))
93
+(defmethod fwoar--pl-selector (&context (projectile-project-type (eql :clojure)))
94
+  (cider-selector))
95
+(defmethod fwoar--pl-selector (&context (major-mode cider-repl-mode))
96
+  (cider-selector))
0 97
new file mode 100644
... ...
@@ -0,0 +1,59 @@
1
+(defun fwoar/cider-hook-base ()
2
+  (flycheck-mode)
3
+  (rainbow-delimiters-mode 1)
4
+  (evil-smartparens-mode 1)
5
+  (smartparens-strict-mode 1)
6
+  (helm-cider-mode 1)
7
+  (cider-company-enable-fuzzy-completion))
8
+(defun fwoar/cider-hook ()
9
+  (fwoar/cider-hook-base)
10
+  (aggressive-indent-mode 1))
11
+(defun fwoar/cider-repl-hook ()
12
+  (fwoar/cider-hook-base)
13
+  (aggressive-indent-mode 0))
14
+
15
+(defun fwoar/cider-eval-expression-at-point-in-repl ()
16
+  (interactive)
17
+  (let ((form (cider-defun-at-point)))
18
+    ;; Strip excess whitespace
19
+    (while (string-match "\\`\s+\\|\n+\\'" form)
20
+      (setq form (replace-match "" t t form)))
21
+    (with-current-buffer (cider-current-repl nil t)
22
+      (let ((fw/window (get-buffer-window)))
23
+        (with-selected-window fw/window
24
+          (end-of-buffer)
25
+          (insert form)
26
+          (cider-repl-return)
27
+          (end-of-buffer))))))
28
+
29
+(use-package cider
30
+  :ensure t
31
+  :config
32
+  (require 'cider-selector)
33
+  (define-key evil-normal-state-map " t" 'cider-test-run-ns-tests)
34
+  (evil-define-key 'normal clojure-mode-map " '" 'helm-cider-apropos)
35
+
36
+  (def-cider-selector-method ?S "find clojure project file"
37
+    (fwoar--find-system))
38
+
39
+  (add-hook 'cider-mode-hook 'fwoar/cider-hook)
40
+  (add-hook 'cider-repl-mode-hook 'fwoar/cider-repl-hook)
41
+
42
+  (modify-syntax-entry ?: "w" clojure-mode-syntax-table)
43
+  (modify-syntax-entry ?_ "w" clojure-mode-syntax-table)
44
+  (modify-syntax-entry ?- "w" clojure-mode-syntax-table)
45
+  (modify-syntax-entry ?~ "w" clojure-mode-syntax-table)
46
+  (modify-syntax-entry ?. "w" clojure-mode-syntax-table)
47
+
48
+  (define-key cider-repl-mode-map (kbd "C-c M-o") 'cider-repl-clear-buffer)
49
+  (define-key cider-repl-mode-map (kbd "C-c C-o") 'cider-repl-clear-output)
50
+  (setq cider-save-file-on-load t
51
+        cider-repl-history-file "~/.emacs.d/cider-history.clj")
52
+
53
+  (define-key cider-mode-map
54
+    (kbd "C-c C-j") 'fwoar/cider-eval-expression-at-point-in-repl))
55
+
56
+(use-package flycheck-clj-kondo
57
+  :ensure t)
58
+
59
+