init-lisp.el 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. ;;; Lisp
  2. (with-eval-after-load 'lispyville
  3. ;; REVIEW: lispy-occur: helm-occur does not restrict to region. Check latest helm.
  4. (lispyville-set-key-theme
  5. '(operators ; Add equivalent for lispy-delete?
  6. c-w ; Bind M-backspace to lispyville-delete-backward-word?
  7. (escape insert)
  8. slurp/barf-cp
  9. ;; (mark insert)
  10. mark-toggle ; TODO: Check out readme.
  11. ))
  12. (lispyville--define-key '(motion normal visual)
  13. (kbd "^") #'lispy-left
  14. (kbd "M-h") #'lispyville-previous-opening
  15. (kbd "M-l") #'lispyville-next-opening
  16. (kbd "M-j") #'lispy-down
  17. (kbd "M-k") #'lispy-up
  18. (kbd "M-H") #'lispy-up-slurp ; lispy-down-slurp?
  19. (kbd "M-J") #'lispyville-drag-forward
  20. (kbd "M-K") #'lispyville-drag-backward
  21. (kbd "M-L") #'lispy-move-right ; lispy-up-slurp?
  22. (kbd "C-x C-e") #'lispy-eval
  23. (kbd "C-j") #'lispy-split
  24. (kbd "S-C-j") #'lispy-join
  25. (kbd "C-1") #'lispy-describe-inline
  26. (kbd "C-2") #'lispy-arglist-inline
  27. (kbd "C-4") #'lispy-x
  28. (kbd "gd") #'lispy-goto-symbol
  29. ;; (kbd "/") #'lispy-occur
  30. ;; (kbd "M-;") #'lispy-comment ; This conflicts with `iedit-toggle-selection' default binding.
  31. ;; TODO: lispy-eval-and-replace
  32. ")" #'lispy-right
  33. "=" #'lispyville-prettify)
  34. (lispyville--define-key 'insert
  35. (kbd "<backspace>") 'lispy-delete-backward
  36. ";" 'lispy-comment
  37. ;; ":" 'lispy-colon ; The colon is not always used to delimit keys.
  38. "'" 'lispy-tick
  39. "`" 'lispy-backtick
  40. "\"" 'lispy-quotes
  41. "(" 'lispy-parens
  42. ")" 'lispy-right-nostring)
  43. (lispyville--define-key '(motion normal)
  44. ;; "q" 'lispy-ace-paren ; REVIEW: Conflicts with magit-blame's quit. Fixed?
  45. "Q" 'special-lispy-teleport ; TODO: Go to closest parenthesis if not on one.
  46. "q" 'lispy-ace-paren
  47. ;; "f" 'lispy-ace-paren
  48. ;; "Q" 'lispy-ace-symbol
  49. ;; "t" 'lispy-ace-char
  50. "Y" 'lispy-new-copy
  51. (kbd "S-<return>") 'lispy-eval-other-window
  52. ;; "p" 'lispy-paste
  53. (kbd "M-C") 'lispy-clone ; TODO: Go to closest parenthesis if not on one. forward-char + lispyville-backward-up-list?
  54. "D" 'lispy-kill)
  55. (lispy-define-key lispy-mode-map-special "C" 'lispy-clone))
  56. (defun ambrevar/init-lispy ()
  57. (when (require 'lispy nil t)
  58. (set-face-foreground 'lispy-face-hint "#FF00FF")
  59. (when (require 'lispyville nil t)
  60. (add-hook 'lispy-mode-hook 'lispyville-mode))
  61. (lispyville-mode)))
  62. (dolist (hook '(lisp-mode-hook
  63. common-lisp-mode-hook
  64. emacs-lisp-mode-hook
  65. scheme-mode-hook))
  66. (add-hook hook 'ambrevar/turn-on-prettify-before-save)
  67. (add-hook hook 'ambrevar/turn-on-complete-filename)
  68. (add-hook hook 'ambrevar/turn-on-tab-width-to-8) ; Because some existing code uses tabs.
  69. (add-hook hook 'ambrevar/turn-off-indent-tabs) ; Should not use tabs.
  70. (add-hook hook 'ambrevar/init-lispy)
  71. (when (fboundp 'rainbow-delimiters-mode)
  72. (add-hook hook #'rainbow-delimiters-mode)))
  73. (when (require 'rainbow-delimiters nil t)
  74. ;; See https://yoo2080.wordpress.com/2013/09/08/living-with-rainbow-delimiters-mode/.
  75. ;; TODO: The color saturation metioned in the URL fails when running in daemon mode.
  76. ;; https://github.com/Fanael/rainbow-delimiters/issues/36
  77. (set-face-foreground 'rainbow-delimiters-depth-1-face "#fe1717")
  78. (set-face-foreground 'rainbow-delimiters-depth-2-face "#589cff")
  79. (set-face-foreground 'rainbow-delimiters-depth-3-face "#f1fe52")
  80. (set-face-foreground 'rainbow-delimiters-depth-4-face "#44ff4c")
  81. (set-face-foreground 'rainbow-delimiters-depth-5-face "#83b2ff")
  82. (set-face-foreground 'rainbow-delimiters-depth-6-face "#6161ff")
  83. (set-face-foreground 'rainbow-delimiters-depth-7-face "#35ff35")
  84. (set-face-foreground 'rainbow-delimiters-depth-8-face "#7ca8ff")
  85. (set-face-foreground 'rainbow-delimiters-depth-9-face "#50fec1")
  86. (set-face-attribute 'rainbow-delimiters-unmatched-face nil
  87. :foreground 'unspecified
  88. :inherit 'error
  89. :strike-through t))
  90. ;;; Common LISP.
  91. (setq inferior-lisp-program "sbcl --noinform")
  92. ;; (add-hook 'slime-mode-hook
  93. ;; (lambda ()
  94. ;; (unless (slime-connected-p)
  95. ;; (save-excursion (slime)))))
  96. ;;; Scheme.
  97. ;; (setq geiser-repl-skip-version-check-p t
  98. ;; geiser-mode-start-repl-p t)
  99. (provide 'init-lisp)