Emacs/Lisp: Split Scheme and Common Lisp setups
parent
763fc7b25f
commit
b2702fc2c1
|
@ -260,7 +260,20 @@
|
||||||
;;; Lisp
|
;;; Lisp
|
||||||
(nconc package-selected-packages '(lispy lispyville rainbow-delimiters geiser slime))
|
(nconc package-selected-packages '(lispy lispyville rainbow-delimiters geiser slime))
|
||||||
(with-eval-after-load 'lisp-mode (require 'init-lisp))
|
(with-eval-after-load 'lisp-mode (require 'init-lisp))
|
||||||
|
(with-eval-after-load 'scheme-mode (require 'init-scheme))
|
||||||
(setq geiser-repl-history-filename (expand-file-name "geiser_history" user-emacs-directory))
|
(setq geiser-repl-history-filename (expand-file-name "geiser_history" user-emacs-directory))
|
||||||
|
;; Emacs Lisp
|
||||||
|
(add-hook 'emacs-lisp-mode-hook 'ambrevar/turn-on-prettify-before-save)
|
||||||
|
(add-hook 'emacs-lisp-mode-hook 'ambrevar/turn-on-complete-filename)
|
||||||
|
(add-hook 'emacs-lisp-mode-hook 'ambrevar/turn-on-tab-width-to-8) ; Because some existing code uses tabs.
|
||||||
|
(add-hook 'emacs-lisp-mode-hook 'ambrevar/turn-off-indent-tabs) ; Should not use tabs.
|
||||||
|
(add-hook 'emacs-lisp-mode-hook 'ambrevar/init-lispy)
|
||||||
|
(when (fboundp 'rainbow-delimiters-mode)
|
||||||
|
(add-hook 'emacs-lisp-mode-hook #'rainbow-delimiters-mode))
|
||||||
|
(ambrevar/define-keys emacs-lisp-mode-map
|
||||||
|
"<f5>" 'package-lint-current-buffer
|
||||||
|
;; Do not use `recompile' since we want to change the compilation folder for the current buffer.
|
||||||
|
"<f6>" (lambda () (interactive) (async-byte-recompile-directory (file-name-directory (buffer-file-name)))))
|
||||||
|
|
||||||
;;; Lua
|
;;; Lua
|
||||||
(nconc package-selected-packages '(lua-mode))
|
(nconc package-selected-packages '(lua-mode))
|
||||||
|
|
|
@ -1,104 +1,15 @@
|
||||||
;;; Lisp
|
;;; Lisp
|
||||||
|
|
||||||
(with-eval-after-load 'lispyville
|
(require 'init-lispy)
|
||||||
(lispyville-set-key-theme
|
(require 'init-rainbow)
|
||||||
'(operators ; Add equivalent for lispy-delete?
|
|
||||||
c-w ; Bind M-backspace to lispyville-delete-backward-word?
|
|
||||||
(escape insert)
|
|
||||||
slurp/barf-cp
|
|
||||||
;; (mark insert)
|
|
||||||
mark-toggle ; TODO: Check out readme.
|
|
||||||
))
|
|
||||||
(lispyville--define-key '(motion normal visual)
|
|
||||||
(kbd "^") #'lispy-left
|
|
||||||
(kbd "M-h") #'lispyville-previous-opening
|
|
||||||
(kbd "M-l") #'lispyville-next-opening
|
|
||||||
(kbd "M-j") #'lispy-down
|
|
||||||
(kbd "M-k") #'lispy-up
|
|
||||||
(kbd "M-H") #'lispy-up-slurp ; lispy-down-slurp?
|
|
||||||
(kbd "M-J") #'lispyville-drag-forward
|
|
||||||
(kbd "M-K") #'lispyville-drag-backward
|
|
||||||
(kbd "M-L") #'lispy-move-right ; lispy-up-slurp?
|
|
||||||
(kbd "C-x C-e") #'lispy-eval
|
|
||||||
(kbd "C-j") #'lispy-split
|
|
||||||
(kbd "S-C-j") #'lispy-join
|
|
||||||
(kbd "C-1") #'lispy-describe-inline
|
|
||||||
(kbd "C-2") #'lispy-arglist-inline
|
|
||||||
(kbd "C-4") #'lispy-x
|
|
||||||
(kbd "gd") #'lispy-goto-symbol
|
|
||||||
(kbd "M-<backspace>") 'lispyville-delete-backward-word
|
|
||||||
;; (kbd "/") #'lispy-occur
|
|
||||||
;; (kbd "M-;") #'lispy-comment ; This conflicts with `iedit-toggle-selection' default binding.
|
|
||||||
;; TODO: lispy-eval-and-replace
|
|
||||||
")" #'lispy-right
|
|
||||||
"=" #'lispyville-prettify)
|
|
||||||
(lispyville--define-key 'insert
|
|
||||||
(kbd "<backspace>") 'lispy-delete-backward
|
|
||||||
(kbd "M-<backspace>") 'lispyville-delete-backward-word
|
|
||||||
";" 'lispy-comment
|
|
||||||
;; ":" 'lispy-colon ; The colon is not always used to delimit keys.
|
|
||||||
"'" 'lispy-tick
|
|
||||||
"`" 'lispy-backtick
|
|
||||||
"\"" 'lispy-quotes
|
|
||||||
"(" 'lispy-parens
|
|
||||||
")" 'lispy-right-nostring)
|
|
||||||
(lispyville--define-key '(motion normal)
|
|
||||||
;; "q" 'lispy-ace-paren ; REVIEW: Conflicts with magit-blame's quit. Fixed?
|
|
||||||
"Q" 'special-lispy-teleport ; TODO: Go to closest parenthesis if not on one.
|
|
||||||
"q" 'lispy-ace-paren
|
|
||||||
;; "f" 'lispy-ace-paren
|
|
||||||
;; "Q" 'lispy-ace-symbol
|
|
||||||
;; "t" 'lispy-ace-char
|
|
||||||
"Y" 'lispy-new-copy
|
|
||||||
(kbd "S-<return>") 'lispy-eval-other-window
|
|
||||||
;; "p" 'lispy-paste
|
|
||||||
(kbd "M-C") 'lispy-clone ; TODO: Go to closest parenthesis if not on one. forward-char + lispyville-backward-up-list?
|
|
||||||
"D" 'lispy-kill)
|
|
||||||
|
|
||||||
(lispy-define-key lispy-mode-map-special "C" 'lispy-clone))
|
(add-hook 'lisp-mode-hook 'ambrevar/turn-on-prettify-before-save)
|
||||||
|
(add-hook 'lisp-mode-hook 'ambrevar/turn-on-complete-filename)
|
||||||
(defun ambrevar/init-lispy ()
|
(add-hook 'lisp-mode-hook 'ambrevar/turn-on-tab-width-to-8) ; Because some existing code uses tabs.
|
||||||
(when (require 'lispy nil t)
|
(add-hook 'lisp-mode-hook 'ambrevar/turn-off-indent-tabs) ; Should not use tabs.
|
||||||
(set-face-foreground 'lispy-face-hint "#FF00FF")
|
(add-hook 'lisp-mode-hook 'ambrevar/init-lispy)
|
||||||
(when (require 'lispyville nil t)
|
(when (fboundp 'rainbow-delimiters-mode)
|
||||||
(add-hook 'lispy-mode-hook 'lispyville-mode))
|
(add-hook 'lisp-mode-hook #'rainbow-delimiters-mode))
|
||||||
(lispyville-mode)))
|
|
||||||
|
|
||||||
(dolist (hook '(lisp-mode-hook
|
|
||||||
common-lisp-mode-hook
|
|
||||||
emacs-lisp-mode-hook
|
|
||||||
scheme-mode-hook))
|
|
||||||
(add-hook hook 'ambrevar/turn-on-prettify-before-save)
|
|
||||||
(add-hook hook 'ambrevar/turn-on-complete-filename)
|
|
||||||
(add-hook hook 'ambrevar/turn-on-tab-width-to-8) ; Because some existing code uses tabs.
|
|
||||||
(add-hook hook 'ambrevar/turn-off-indent-tabs) ; Should not use tabs.
|
|
||||||
(add-hook hook 'ambrevar/init-lispy)
|
|
||||||
(when (fboundp 'rainbow-delimiters-mode)
|
|
||||||
(add-hook hook #'rainbow-delimiters-mode)))
|
|
||||||
|
|
||||||
(when (require 'rainbow-delimiters nil t)
|
|
||||||
;; See https://yoo2080.wordpress.com/2013/09/08/living-with-rainbow-delimiters-mode/.
|
|
||||||
;; TODO: The color saturation metioned in the URL fails when running in daemon mode.
|
|
||||||
;; https://github.com/Fanael/rainbow-delimiters/issues/36
|
|
||||||
(set-face-foreground 'rainbow-delimiters-depth-1-face "#fe1717")
|
|
||||||
(set-face-foreground 'rainbow-delimiters-depth-2-face "#589cff")
|
|
||||||
(set-face-foreground 'rainbow-delimiters-depth-3-face "#f1fe52")
|
|
||||||
(set-face-foreground 'rainbow-delimiters-depth-4-face "#44ff4c")
|
|
||||||
(set-face-foreground 'rainbow-delimiters-depth-5-face "#83b2ff")
|
|
||||||
(set-face-foreground 'rainbow-delimiters-depth-6-face "#6161ff")
|
|
||||||
(set-face-foreground 'rainbow-delimiters-depth-7-face "#35ff35")
|
|
||||||
(set-face-foreground 'rainbow-delimiters-depth-8-face "#7ca8ff")
|
|
||||||
(set-face-foreground 'rainbow-delimiters-depth-9-face "#50fec1")
|
|
||||||
(set-face-attribute 'rainbow-delimiters-unmatched-face nil
|
|
||||||
:foreground 'unspecified
|
|
||||||
:inherit 'error
|
|
||||||
:strike-through t))
|
|
||||||
|
|
||||||
;; Emacs Lisp
|
|
||||||
(ambrevar/define-keys emacs-lisp-mode-map
|
|
||||||
"<f5>" 'package-lint-current-buffer
|
|
||||||
;; Do not use `recompile' since we want to change the compilation folder for the current buffer.
|
|
||||||
"<f6>" (lambda () (interactive) (async-byte-recompile-directory (file-name-directory (buffer-file-name)))))
|
|
||||||
|
|
||||||
;;; Common LISP.
|
;;; Common LISP.
|
||||||
(defun ambrevar/slime-switch-to-repl () ; TODO: Replace with `helm-defswitch'.
|
(defun ambrevar/slime-switch-to-repl () ; TODO: Replace with `helm-defswitch'.
|
||||||
|
@ -155,26 +66,4 @@
|
||||||
(when (require 'clhs nil 'noerror)
|
(when (require 'clhs nil 'noerror)
|
||||||
(clhs-setup)))
|
(clhs-setup)))
|
||||||
|
|
||||||
;;; Scheme.
|
|
||||||
(with-eval-after-load 'scheme
|
|
||||||
(when (require 'patch-scheme nil t)
|
|
||||||
(setq scheme-imenu-generic-expression
|
|
||||||
al/scheme-imenu-generic-expression)
|
|
||||||
(advice-add 'scheme-indent-function
|
|
||||||
:override 'al/scheme-indent-function)
|
|
||||||
(add-hook 'scheme-mode-hook 'al/scheme-fix-docstring-font-lock)))
|
|
||||||
|
|
||||||
(with-eval-after-load 'geiser-impl
|
|
||||||
;; (setq geiser-repl-skip-version-check-p t
|
|
||||||
;; geiser-mode-start-repl-p t)
|
|
||||||
(setq geiser-active-implementations (delq 'chicken geiser-active-implementations)
|
|
||||||
geiser-default-implementation 'guile
|
|
||||||
;; geiser-repl-save-debugging-history-p t
|
|
||||||
geiser-repl-history-size 5000)
|
|
||||||
(add-hook 'geiser-repl-mode-hook 'lispyville-mode)
|
|
||||||
(add-hook 'geiser-repl-mode-hook 'rainbow-delimiters-mode))
|
|
||||||
|
|
||||||
(with-eval-after-load 'geiser-guile
|
|
||||||
(require 'patch-geiser nil 'noerror))
|
|
||||||
|
|
||||||
(provide 'init-lisp)
|
(provide 'init-lisp)
|
||||||
|
|
|
@ -0,0 +1,67 @@
|
||||||
|
;; Lispy
|
||||||
|
|
||||||
|
(with-eval-after-load 'lispyville
|
||||||
|
(lispyville-set-key-theme
|
||||||
|
'(operators ; Add equivalent for lispy-delete?
|
||||||
|
c-w ; Bind M-backspace to lispyville-delete-backward-word?
|
||||||
|
(escape insert)
|
||||||
|
slurp/barf-cp
|
||||||
|
;; (mark insert)
|
||||||
|
mark-toggle ; TODO: Check out readme.
|
||||||
|
))
|
||||||
|
(lispyville--define-key '(motion normal visual)
|
||||||
|
(kbd "^") #'lispy-left
|
||||||
|
(kbd "M-h") #'lispyville-previous-opening
|
||||||
|
(kbd "M-l") #'lispyville-next-opening
|
||||||
|
(kbd "M-j") #'lispy-down
|
||||||
|
(kbd "M-k") #'lispy-up
|
||||||
|
(kbd "M-H") #'lispy-up-slurp ; lispy-down-slurp?
|
||||||
|
(kbd "M-J") #'lispyville-drag-forward
|
||||||
|
(kbd "M-K") #'lispyville-drag-backward
|
||||||
|
(kbd "M-L") #'lispy-move-right ; lispy-up-slurp?
|
||||||
|
(kbd "C-x C-e") #'lispy-eval
|
||||||
|
(kbd "C-j") #'lispy-split
|
||||||
|
(kbd "S-C-j") #'lispy-join
|
||||||
|
(kbd "C-1") #'lispy-describe-inline
|
||||||
|
(kbd "C-2") #'lispy-arglist-inline
|
||||||
|
(kbd "C-4") #'lispy-x
|
||||||
|
(kbd "gd") #'lispy-goto-symbol
|
||||||
|
(kbd "M-<backspace>") 'lispyville-delete-backward-word
|
||||||
|
;; (kbd "/") #'lispy-occur
|
||||||
|
;; (kbd "M-;") #'lispy-comment ; This conflicts with `iedit-toggle-selection' default binding.
|
||||||
|
;; TODO: lispy-eval-and-replace
|
||||||
|
")" #'lispy-right
|
||||||
|
"=" #'lispyville-prettify)
|
||||||
|
(lispyville--define-key 'insert
|
||||||
|
(kbd "<backspace>") 'lispy-delete-backward
|
||||||
|
(kbd "M-<backspace>") 'lispyville-delete-backward-word
|
||||||
|
";" 'lispy-comment
|
||||||
|
;; ":" 'lispy-colon ; The colon is not always used to delimit keys.
|
||||||
|
"'" 'lispy-tick
|
||||||
|
"`" 'lispy-backtick
|
||||||
|
"\"" 'lispy-quotes
|
||||||
|
"(" 'lispy-parens
|
||||||
|
")" 'lispy-right-nostring)
|
||||||
|
(lispyville--define-key '(motion normal)
|
||||||
|
;; "q" 'lispy-ace-paren ; REVIEW: Conflicts with magit-blame's quit. Fixed?
|
||||||
|
"Q" 'special-lispy-teleport ; TODO: Go to closest parenthesis if not on one.
|
||||||
|
"q" 'lispy-ace-paren
|
||||||
|
;; "f" 'lispy-ace-paren
|
||||||
|
;; "Q" 'lispy-ace-symbol
|
||||||
|
;; "t" 'lispy-ace-char
|
||||||
|
"Y" 'lispy-new-copy
|
||||||
|
(kbd "S-<return>") 'lispy-eval-other-window
|
||||||
|
;; "p" 'lispy-paste
|
||||||
|
(kbd "M-C") 'lispy-clone ; TODO: Go to closest parenthesis if not on one. forward-char + lispyville-backward-up-list?
|
||||||
|
"D" 'lispy-kill)
|
||||||
|
|
||||||
|
(lispy-define-key lispy-mode-map-special "C" 'lispy-clone))
|
||||||
|
|
||||||
|
(defun ambrevar/init-lispy ()
|
||||||
|
(when (require 'lispy nil t)
|
||||||
|
(set-face-foreground 'lispy-face-hint "#FF00FF")
|
||||||
|
(when (require 'lispyville nil t)
|
||||||
|
(add-hook 'lispy-mode-hook 'lispyville-mode))
|
||||||
|
(lispyville-mode)))
|
||||||
|
|
||||||
|
(provide 'init-lispy)
|
|
@ -0,0 +1,20 @@
|
||||||
|
;; Rainbow delimiters
|
||||||
|
|
||||||
|
(when (require 'rainbow-delimiters nil t)
|
||||||
|
;; See https://yoo2080.wordpress.com/2013/09/08/living-with-rainbow-delimiters-mode/.
|
||||||
|
;; TODO: The color saturation metioned in the URL fails when running in daemon mode.
|
||||||
|
;; https://github.com/Fanael/rainbow-delimiters/issues/36
|
||||||
|
(set-face-foreground 'rainbow-delimiters-depth-1-face "#fe1717")
|
||||||
|
(set-face-foreground 'rainbow-delimiters-depth-2-face "#589cff")
|
||||||
|
(set-face-foreground 'rainbow-delimiters-depth-3-face "#f1fe52")
|
||||||
|
(set-face-foreground 'rainbow-delimiters-depth-4-face "#44ff4c")
|
||||||
|
(set-face-foreground 'rainbow-delimiters-depth-5-face "#83b2ff")
|
||||||
|
(set-face-foreground 'rainbow-delimiters-depth-6-face "#6161ff")
|
||||||
|
(set-face-foreground 'rainbow-delimiters-depth-7-face "#35ff35")
|
||||||
|
(set-face-foreground 'rainbow-delimiters-depth-8-face "#7ca8ff")
|
||||||
|
(set-face-foreground 'rainbow-delimiters-depth-9-face "#50fec1")
|
||||||
|
(set-face-attribute 'rainbow-delimiters-unmatched-face nil
|
||||||
|
:foreground 'unspecified
|
||||||
|
:inherit 'error
|
||||||
|
:strike-through t))
|
||||||
|
(provide 'init-rainbow)
|
|
@ -0,0 +1,35 @@
|
||||||
|
;;; Scheme
|
||||||
|
|
||||||
|
(require 'init-lispy)
|
||||||
|
(require 'init-rainbow)
|
||||||
|
|
||||||
|
(add-hook 'scheme-mode-hook 'ambrevar/turn-on-prettify-before-save)
|
||||||
|
(add-hook 'scheme-mode-hook 'ambrevar/turn-on-complete-filename)
|
||||||
|
(add-hook 'scheme-mode-hook 'ambrevar/turn-on-tab-width-to-8) ; Because some existing code uses tabs.
|
||||||
|
(add-hook 'scheme-mode-hook 'ambrevar/turn-off-indent-tabs) ; Should not use tabs.
|
||||||
|
(add-hook 'scheme-mode-hook 'ambrevar/init-lispy)
|
||||||
|
(when (fboundp 'rainbow-delimiters-mode)
|
||||||
|
(add-hook 'scheme-mode-hook #'rainbow-delimiters-mode))
|
||||||
|
|
||||||
|
(with-eval-after-load 'scheme
|
||||||
|
(when (require 'patch-scheme nil t)
|
||||||
|
(setq scheme-imenu-generic-expression
|
||||||
|
al/scheme-imenu-generic-expression)
|
||||||
|
(advice-add 'scheme-indent-function
|
||||||
|
:override 'al/scheme-indent-function)
|
||||||
|
(add-hook 'scheme-mode-hook 'al/scheme-fix-docstring-font-lock)))
|
||||||
|
|
||||||
|
(with-eval-after-load 'geiser-impl
|
||||||
|
;; (setq geiser-repl-skip-version-check-p t
|
||||||
|
;; geiser-mode-start-repl-p t)
|
||||||
|
(setq geiser-active-implementations (delq 'chicken geiser-active-implementations)
|
||||||
|
geiser-default-implementation 'guile
|
||||||
|
;; geiser-repl-save-debugging-history-p t
|
||||||
|
geiser-repl-history-size 5000)
|
||||||
|
(add-hook 'geiser-repl-mode-hook 'lispyville-mode)
|
||||||
|
(add-hook 'geiser-repl-mode-hook 'rainbow-delimiters-mode))
|
||||||
|
|
||||||
|
(with-eval-after-load 'geiser-guile
|
||||||
|
(require 'patch-geiser nil 'noerror))
|
||||||
|
|
||||||
|
(provide 'init-scheme)
|
Loading…
Reference in New Issue