Guest User

Untitled

a guest
Jan 18th, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.96 KB | None | 0 0
  1. (require 'evil)
  2. (require 'cider)
  3. (require 'cider-scratch)
  4. (require 'highlight)
  5. (require 'eval-sexp-fu)
  6.  
  7. ;; make wrapping friendly to Clojure/Pixie/Hy
  8. (with-eval-after-load "evil-lisp-state"
  9. ;; undef SPC k w so we can generalize it
  10. (evil-leader/set-key "kw" nil)
  11. ;; wrap using SPC k w ([{
  12. (evil-leader/set-key "kw("
  13. (lambda (&optional arg) (interactive "P") (sp-wrap-with-pair "(")))
  14. (evil-leader/set-key "kw["
  15. (lambda (&optional arg) (interactive "P") (sp-wrap-with-pair "[")))
  16. (evil-leader/set-key "kw{"
  17. (lambda (&optional arg) (interactive "P") (sp-wrap-with-pair "{")))
  18. (evil-leader/set-key "kw\""
  19. (lambda (&optional arg) (interactive "P") (sp-wrap-with-pair "\""))))
  20.  
  21. (defun spacemacs//emacs-lisp-eval-region-and-print (beg end)
  22. (interactive)
  23. (let* ((raw-result (with-output-to-string
  24. (eval-region beg end standard-output)))
  25. (result (when (>= (length raw-result) 1)
  26. (substring raw-result 1 -1))))
  27. (when result
  28. (cider--display-interactive-eval-result result end))))
  29.  
  30. (defvar spacemacs--generic-eval-region-alist
  31. '((clojure-mode . cider-eval-region)
  32. (emacs-lisp-mode . spacemacs//emacs-lisp-eval-region-and-print)
  33. (python-mode . python-shell-send-region)
  34. (lisp-mode . lisp-eval-region)))
  35.  
  36. ;(lisp-eval-string "(+ 1 2 3)")
  37.  
  38. (defun spacemacs//get-eval-region-for-current-mode ()
  39. (interactive)
  40. (catch 'break
  41. (dolist (test spacemacs--generic-eval-region-alist)
  42. (let ((mode (car test))
  43. (val (cdr test)))
  44. (when (and (symbolp mode)
  45. (derived-mode-p mode)
  46. (symbolp val))
  47. (throw 'break val))))))
  48.  
  49. (defun spacemacs//generic-eval-region (beg end)
  50. (interactive)
  51. (let ((f (spacemacs//get-eval-region-for-current-mode)))
  52. (when (functionp f)
  53. (funcall f beg end))))
  54.  
  55. (evil-define-operator spacemacs//generic-evil-eval-operator (beg end)
  56. (spacemacs//generic-eval-region beg end))
  57.  
  58. (defun spacemacs//generic-eval-line ()
  59. "Evals the current line as though you did (kbd \"ma^ SPC meo $`a\")"
  60. (interactive)
  61. ;; we don't use execute-kbd-macro here, because popping the mark kills the overlay
  62. (save-excursion
  63. (let* ((beg (progn (beginning-of-line) (point)))
  64. (end (progn (end-of-line) (point))))
  65. (spacemacs//generic-eval-region beg end))))
  66.  
  67. (defun spacemacs//generic-eval-paragraph ()
  68. "Evals the current paragraph as though you did (kbd \"ma SPC meo ap`a\")"
  69. (interactive)
  70. ;; we don't use execute-kbd-macro here, because popping the mark kills the overlay
  71. (save-excursion
  72. (let* ((graph (evil-inner-paragraph))
  73. (beg (first graph))
  74. (end (second graph)))
  75. (spacemacs//generic-eval-region beg end))))
  76.  
  77. ;; Enable highlighting of the area to be eval'd
  78. (define-eval-sexp-fu-flash-command spacemacs//generic-eval-region
  79. (eval-sexp-fu-flash (cons beg end)))
  80.  
  81. (defun emidln//setup-emacs-lisp-mode ()
  82. (interactive)
  83.  
  84. ;; treat - as part of words
  85. (modify-syntax-entry ?- "w" emacs-lisp-mode-syntax-table)
  86.  
  87. ;; enable SPC meo as eval operator
  88. (evil-leader/set-key "meo" 'spacemacs//generic-evil-eval-operator)
  89.  
  90. ;; setup custom keybindings
  91. (define-key emacs-lisp-mode-map (kbd "C-c C-c") nil)
  92. (define-key emacs-lisp-mode-map (kbd "C-c C-l") nil)
  93. (define-key emacs-lisp-mode-map (kbd "C-c C-L") nil)
  94. (define-key emacs-lisp-mode-map (kbd "C-c C-r") nil)
  95.  
  96. ;; (evil-define-key 'normal emacs-lisp-mode-map
  97. ;; (kbd "C-c C-l") nil)
  98.  
  99. ;; (evil-define-key 'normal emacs-lisp-mode-map
  100. ;; (kbd "C-c C-l") 'spacemacs//generic-eval-line)
  101.  
  102. ;; (evil-define-key 'normal emacs-lisp-mode-map
  103. ;; (kbd "C-c C-l") 'spacemacs//generic-eval-paragraph)
  104.  
  105. (evil-define-key 'normal emacs-lisp-mode-map
  106. (kbd "C-c C-c") 'spacemacs//generic-eval-paragraph
  107. (kbd "C-c C-l") 'spacemacs//generic-eval-line
  108. (kbd "C-c C-L") 'eval-buffer
  109. (kbd "C-c C-r") 'spacemacs//generic-eval-region)
  110.  
  111. (spacemacs/set-leader-keys-for-major-mode 'emacs-lisp-mode
  112. "er" 'spacemacs//generic-eval-region
  113. "ep" 'spacemacs//generic-eval-paragraph
  114. "el" 'spacemacs//generic-eval-line))
  115.  
  116. (emidln//setup-emacs-lisp-mode)
  117. (add-hook 'emacs-lisp-mode-hook 'emidln//setup-emacs-lisp-mode)
  118.  
  119. (defun emidln//setup-lisp-mode ()
  120. (interactive)
  121. ;; treat - as part of words
  122. (modify-syntax-entry ?- "w" emacs-lisp-mode-syntax-table)
  123.  
  124. ;; enable SPC meo as eval operator
  125. (evil-leader/set-key "meo" 'spacemacs//generic-evil-eval-operator)
  126.  
  127. ;; setup custom keybindings
  128. (define-key lisp-mode-map (kbd "C-c C-c") nil)
  129. (define-key lisp-mode-map (kbd "C-c C-l") nil)
  130. (define-key lisp-mode-map (kbd "C-c C-L") nil)
  131. (define-key lisp-mode-map (kbd "C-c C-r") nil)
  132.  
  133. (evil-define-key 'normal lisp-mode-map
  134. (kbd "C-c C-c") 'spacemacs//generic-eval-paragraph
  135. (kbd "C-c C-l") 'spacemacs//generic-eval-line
  136. (kbd "C-c C-L") 'eval-buffer
  137. (kbd "C-c C-r") 'spacemacs//generic-eval-region)
  138.  
  139. (spacemacs/set-leader-keys-for-major-mode 'lisp-mode
  140. "er" 'spacemacs//generic-eval-region
  141. "ep" 'spacemacs//generic-eval-paragraph
  142. "el" 'spacemacs//generic-eval-line)
  143. )
  144.  
  145. (emidln//setup-lisp-mode)
  146. (add-hook 'lisp-mode 'emidln//setup-lisp-mode)
  147.  
  148. (defun cider-show-cider-buffer ()
  149. (interactive)
  150. (command-execute 'cider-switch-to-repl-buffer)
  151. (command-execute 'cider-switch-to-last-clojure-buffer))
  152.  
  153. (defun emidln//setup-clojure-mode ()
  154. (interactive)
  155.  
  156. ;; treat - as part of words
  157. (modify-syntax-entry ?- "w" clojure-mode-syntax-table)
  158.  
  159. ;; enable SPC meo as eval operator
  160. (evil-leader/set-key "meo" 'spacemacs//generic-evil-eval-operator)
  161.  
  162. ;; setup custom bindings
  163. (define-key cider-mode-map (kbd "C-c C-c") 'spacemacs//generic-eval-paragraph)
  164. (define-key cider-mode-map (kbd "C-c C-l") 'spacemacs//generic-eval-line)
  165. (define-key cider-mode-map (kbd "C-c C-L") 'cider-load-buffer)
  166. (define-key cider-mode-map (kbd "C-c C-i") 'cider-inspect-last-result)
  167. (define-key cider-clojure-interaction-mode-map (kbd "C-c C-l") 'spacemacs//generic-eval-line)
  168. (define-key cider-clojure-interaction-mode-map (kbd "C-c C-L") 'cider-load-buffer)
  169. (spacemacs/set-leader-keys-for-major-mode 'clojure-mode
  170. "ep" 'spacemacs//generic-eval-paragraph
  171. "sp" 'spacemacs//generic-eval-paragraph
  172. "sl" 'spacemacs//generic-eval-line
  173. "el" 'spacemacs//generic-eval-line
  174. "sS" 'cider-show-cider-buffer
  175. "dl" 'cider-inspect-last-result
  176. )
  177.  
  178. )
  179.  
  180. (emidln//setup-clojure-mode)
  181.  
  182. (with-eval-after-load "clojure-mode"
  183. (emidln//setup-clojure-mode))
  184.  
  185. ;(add-hook 'clojure-mode-hook 'emidln//setup-clojure-mode)
  186.  
  187. (defadvice cider-scratch (after cider-scratch-advise activate)
  188. (with-current-buffer (get-buffer cider-scratch-buffer-name)
  189. (clojure-mode)
  190. (cider-jack-in)))
  191.  
  192. (which-key-add-key-based-replacements
  193. "SPC m s b" "load buffer"
  194. "SPC m s B" "send buffer and focus"
  195. "SPC m s c" "connect"
  196. "SPC m s e" "eval last sexp"
  197. "SPC m s E" "send last sexp and focus"
  198. "SPC m s f" "send function"
  199. "SPC m s F" "send function and focus"
  200. "SPC m s i" "start repl"
  201. "SPC m s I" "start cljs repl"
  202. "SPC m s l" "eval line"
  203. "SPC m e l" "eval line"
  204. "SPC m s n" "send ns form"
  205. "SPC m s N" "send ns form and focus"
  206. "SPC m s o" "switch repls"
  207. "SPC m s p" "eval paragraph"
  208. "SPC m e p" "eval paragraph"
  209. "SPC m s q" "quit repl"
  210. "SPC m s r" "send region"
  211. "SPC m s R" "send region and focus"
  212. "SPC m s s" "focus repl"
  213. "SPC m s S" "show repl"
  214. "SPC m s x" "refresh repl"
  215. "SPC m d l" "inspect last result")
  216.  
  217. ;; quick window navigation vim-style
  218. (evil-global-set-key 'normal (kbd "C-w w") 'next-multiframe-window)
  219. (evil-global-set-key 'normal (kbd "C-w C-w") 'next-multiframe-window)
  220. (evil-global-set-key 'emacs (kbd "C-w w") 'next-multiframe-window)
  221. (evil-global-set-key 'emacs (kbd "C-w C-w") 'next-multiframe-window)
  222. (spacemacs/set-leader-keys (kbd "ww") 'next-multiframe-window)
  223.  
  224.  
  225. (defmacro comment (&rest body)
  226. "ignore the body and return nil"
  227. nil)
  228.  
  229. ;; make text-scale-increase/text-scale-decrease global across buffers
  230. (defadvice text-scale-increase (around all-buffers (arg) activate)
  231. (dolist (buffer (buffer-list))
  232. (with-current-buffer buffer
  233. ad-do-it)))
Add Comment
Please, Sign In to add comment