O3777TK2IVZ6LQATEWWIICGJY3GXO4MOUHZ73ENZFSY3VW4Q2DQAC O44NSJ7NBP6VO6BMDKN4XID4SLPHLQQVN6AC3PU3XX5BGD3XGZZQC RXCY7LD6ZRIOIKZEYKLMCYPMQPXF4DOEEFBDLVR2B22BXLZJFFBQC A3TVGLVHSVLMEHLHB3TPBSD3QGNVGX3DIK6BEBDTTHWBNW4ALMRAC IOXOZB2VUXVUEINLFBT4SPSJV32X5ZFT5FKSVRAIEXEFQJLG6MHQC LA4734RIK7CSKUNJCTCI2KCBPNOKELRXVTW6HEPWY65LSYSA3CWAC 7F7T4E5VD2K7I2YRWYPP7EFJTAII5O6LCXDZ3JDXCVOEBJK7HSJQC 6N46BCIIDUA2NCB7VHX6E47WNYYRSDMBHDOABZSVEEMJXWH2LLOAC BWGNLG4PJFLOW4GDWTXIE46CQT5DKZOZZKCDJ5AQI3Y6VBJRY3YQC UIXIJMKKE7STQ65EALHSRFO7J64YCRPRQOQRAX7FJ27455W4X3WAC FWKGBY6ODB6RTZHDHDXF6HUTCJHVY3FW2BXLBDYTRIXCUWSR43TQC ZEEXPVMSAXE2MINLJT4FOIFWZ5QBZK56EHF7644KKC2IYVPEPYVQC 2GNS6EEXJ7EEZWESALVQ2QOGEVWOEE4VC6HOKCLL7UTEPFACJYKQC YXDBKG5MWREH25GV2RUUW7ZI4P2XBNMZSB77WND3A6LUAL4NN63QC ZUIZBW4PM62HWVU6ATCISLO2FNRPZMLAGJIGTNNOOLBGY2IH7QMQC CRI7QVNA3MX55HFSAOS44NFO7COXIGLLOWU3GLROZM77TQ52J46AC NTKY2LPKFRS6RYKCYNW43TVCRNPTHG75PZ5KZHLHAZYTTLDK4EEQC RBGV5L2RZ3QLWUYDVYEZ4YVTUS5BD4VYUQSYSPV2GXU6BSV3EFIQC PD25BRQUV6E3SZVTHGTC5M4UIGV763U2E73CTND5O2LYWOPWZJIQC VVZTDOPJG76P5AVXU4VS3GXXNLKDPMFVLJZUD3E435KX4A3ZCG7AC 3YIUSMARD6GW5TXV7VTC6U5YGPCTD63QATPKBQUTEO7VOFNS3N3AC QQKAMHWEDU5EQN4EEJ4ZTSRCHVU5XNNFZ3UPJ7FSFR23LBAF4IRQC ;;;; SLIME SETUP {{{;; (load (expand-file-name "~/quicklisp/slime-helper.el"))(require 'slime)(global-set-key (kbd "C-c x") 'slime-export-symbol-at-point)(when (and (boundp 'common-lisp-hyperspec-root)(string-prefix-p "/" common-lisp-hyperspec-root))(setq common-lisp-hyperspec-root(concat "file://" common-lisp-hyperspec-root)));; Replace "sbcl" with the path to your implementation(modify-syntax-entry ?- "w" lisp-mode-syntax-table)(modify-syntax-entry ?* "w" lisp-mode-syntax-table)(modify-syntax-entry ?+ "w" lisp-mode-syntax-table)(modify-syntax-entry ?! "w" lisp-mode-syntax-table)(modify-syntax-entry ?$ "w" lisp-mode-syntax-table)(modify-syntax-entry ?% "w" lisp-mode-syntax-table)(modify-syntax-entry ?& "w" lisp-mode-syntax-table)(modify-syntax-entry ?% "w" lisp-mode-syntax-table)(modify-syntax-entry ?= "w" lisp-mode-syntax-table)(modify-syntax-entry ?< "w" lisp-mode-syntax-table)(modify-syntax-entry ?> "w" lisp-mode-syntax-table)(modify-syntax-entry 91 "(" lisp-mode-syntax-table)(modify-syntax-entry 93 ")" lisp-mode-syntax-table);;(modify-syntax-entry ?@ "w" lisp-mode-syntax-table)(modify-syntax-entry ?^ "w" lisp-mode-syntax-table)(modify-syntax-entry ?_ "w" lisp-mode-syntax-table)(modify-syntax-entry ?~ "w" lisp-mode-syntax-table)(modify-syntax-entry ?. "w" lisp-mode-syntax-table)(modify-syntax-entry ?\[ "(]" lisp-mode-syntax-table)(modify-syntax-entry ?\] ")[" lisp-mode-syntax-table)(modify-syntax-entry ?\{ "(}" lisp-mode-syntax-table)(modify-syntax-entry ?\} "){" lisp-mode-syntax-table)(setq shr-inhibit-images tshr-use-fonts nil)(defun fwoar--clhs-lookup (&rest args)(let ((browse-url-browser-function 'eww-browse-url))(hyperspec-lookup (word-at-point))))(pushnew (list ?h "Check hyperspec" #'fwoar--clhs-lookup)slime-selector-methods:key #'car)(find-file (if (not (null (cdr systems)))(helm-comp-read "system:" systems)(car systems)))))slime-selector-methods:key #'car);;;;; }}}With ARG positive N, absorb that many expressions.Examples: (do-stuff 1) (save-excursion (save-excursion -> |(do-stuff 1) |(do-stuff 2)) (do-stuff 2))foo bar (concat |baz quux) -> (concat |foo bar baz quux) ;; 2"(interactive "p")(sp-forward-whitespace)(let* ((old (point))(raise (progn(sp-end-of-sexp)(buffer-substring (point) old))))(delete-region old (point))(sp-forward-slurp-sexp arg)(sp-backward-whitespace)(sp-end-of-sexp)(insert raise)(save-excursion(sp-backward-up-sexp)(indent-sexp)))(sp-backward-whitespace))(defslime-repl-shortcut fwoar--slime-repl-load-asd ("load-asd")(:handler (lambda ()(interactive)(slime-eval-async (cons 'cl:progn(mapcar (lambda (it)`(cl:progn (asdf:load-asd ,it) ,it))system-files))(lambda (r)(message "Loading ASDs done: %s" r))))))(:one-liner "Load asd for current project"))(comment (defslime-repl-shortcut fwoar--slime-repl-quickload ("quickload")(:handler (lambda ()(interactive)(slime-eval-async (cons 'cl:progn(mapcar (lambda (it)`(cl:progn (asdf:load-asd ,it) ,it))system-files))(lambda (r)(message "Loading ASDs done: %s" r))))))(:one-liner "Load asd for current project")))(let ((system-files (fwoar--get-asds)))(let ((system-files (fwoar--get-asds)))(setq slime-contribs '(slime-fancyslime-companyslime-macrostepslime-trace-dialogslime-mdot-fuslime-buffer-streamsslime-indentation)slime-export-save-file t)(slime-setup slime-contribs)(defun sp-absorb-forward-sexp (&optional arg)"Absorb previous expression.Save the expressions preceding point and delete them. Then slurpan expression backward and insert the saved expressions.;;(message (format "s-c-c is: %s" slime-company-completion))(defun slime-ecl ()(interactive)(slime)))(defun slime-cmucl ()(interactive)(slime)))(defun slime-sbcl ()(interactive)(slime)))(defun slime-ccl ()(interactive)(slime)))(defun find-use-clause (current-form)(when current-form(destructuring-bind (discriminator . packages) current-form(case discriminator(:use (remove-if (op (or (eql :cl _)))(cdr current-form)))(defpackage (find-use-clause(find-if (lambda (f)(and (listp f)(eql (car f) :use)))'(defpackage :tracking-sim (:use :cl :alexandria :serapeum) (:export)))))))))(defun load-package-uses ()(interactive)(slime-eval-async `(ql:quickload ',(find-use-clause (list-at-point)))))(let ((inferior-lisp-program "ccl")(slime-lisp-implementations nil))(let ((inferior-lisp-program "sbcl")(slime-lisp-implementations nil))(let ((inferior-lisp-program "cmucl")(slime-lisp-implementations nil))(let ((inferior-lisp-program "ecl")(slime-lisp-implementations nil))(pushnew (list ?S "Goto System" #'fwoar--find-system)(cl-defgeneric fwoar--find-system ())(cl-defmethod fwoar--find-system (&context (major-mode lisp-mode))(let ((systems (fwoar--get-asds)))(defun fwoar--get-asds ()(let ((dir-of-asd (locate-dominating-file default-directory(lambda (n)(directory-files n nil "^[^.#][^#]*[.]asd$")))))(when dir-of-asd(directory-files dir-of-asdt "^[^.#][^#]*[.]asd$"))))(evil-define-key 'normal lisp-mode-map "gd" 'slime-edit-definition)(defun setup-lisp-mode ()(unless (string= "*slime-scratch*" (buffer-name))(smartparens-strict-mode 1)(evil-smartparens-mode 1)(aggressive-indent-mode 1))(define-key evil-insert-state-map "^N" 'slime-fuzzy-indent-and-complete-symbol)(rainbow-delimiters-mode))(add-hook 'lisp-mode-hook 'setup-lisp-mode)(add-hook 'emacs-lisp-mode-hook 'setup-lisp-mode)(setq inferior-lisp-program "~/sbcl/bin/sbcl")(defmacro define-lisp-implementations (&rest decl)`(progn,@(cl-loop for (symbol . args) in declcollect `(progn(defun ,symbol ()(interactive)(slime ',symbol))(cl-pushnew '(,symbol ,@args) slime-lisp-implementations:key 'car)))))(with-eval-after-load "slime"(when (or (eq system-type 'gnu/linux)(eq system-type 'darwin))(define-lisp-implementations(abcl ("abcl"))(ccl ("ccl"))(clisp ("clisp"))(cmucl ("cmucl" "-quiet"))(ecl ("ecl"));;(mkcl ("mkcl"));;(xcl ("xcl"))(sbcl ("sbcl" "--dynamic-space-size" "8192")))));; put slime-company in load-path;; (require 'slime-company)(use-package slime-company:ensure t)(add-to-list 'load-path (fwoar-git-repo "3dp/slime/""git@github.com:slime/slime.git""https://github.com/slime/slime.git"))
(defun wrap-with-doublequote (&optional arg)(interactive "P")(sp-wrap-with-pair "\""))(defun fwoar-delete-mru-window ()(interactive)(delete-window(get-mru-window nil nil t)))(defun wrap-in-dollar-brace(&optional arg)(interactive "P")(sp-wrap-with-pair "${"))(use-package evil:ensure t:config(advice-add 'evil-delete-marks :after(lambda (&rest args)(evil-visual-mark-render)))(define-key evil-insert-state-map (kbd "TAB") 'company-indent-or-complete-common)(evil-mode)(progn ;; navigation(define-key evil-normal-state-map " f" 'helm-projectile)(define-key evil-normal-state-map " j" 'helm-buffers-list)(define-key evil-normal-state-map " u" 'undo-tree-visualize))(progn ;; completion(define-key evil-normal-state-map (kbd "TAB") 'company-indent-or-complete-common)(define-key evil-insert-state-map (kbd "TAB") 'company-indent-or-complete-common))(progn ;; narrowing(define-key evil-normal-state-map " n(" 'sp-narrow-to-sexp)(define-key evil-normal-state-map " n)" 'sp-narrow-to-sexp)(define-key evil-normal-state-map " nn" 'narrow-to-defun)(define-key evil-normal-state-map " nr" 'narrow-to-region)(define-key evil-normal-state-map " nw" 'widen)))(use-package centaur-tabs:ensure t:after evil:config(setq centaur-tabs-adjust-buffer-order tcentaur-tabs-adjust-buffer-order 'left)(centaur-tabs-enable-buffer-reordering)(define-key evil-normal-state-map "gt" 'centaur-tabs-forward-tab)(define-key global-map (kbd "<header-line> <wheel-up>") 'centaur-tabs-forward-tab)(define-key global-map (kbd "s-}") 'centaur-tabs-forward-tab)(define-key evil-normal-state-map "gT" 'centaur-tabs-backward-tab)(define-key global-map (kbd "<header-line> <wheel-down>") 'centaur-tabs-backward-tab)(define-key global-map (kbd "s-{") 'centaur-tabs-backward-tab))(progn ;; splicing(define-key evil-normal-state-map ",S" 'sp-splice-sexp)(define-key cider-mode-map (kbd "C-, S") 'sp-splice-sexp)(define-key cider-mode-map (kbd "C-, C-S") 'sp-splice-sexp)(define-key evil-normal-state-map ",A" 'sp-splice-sexp-killing-backward)(define-key cider-mode-map (kbd "C-, A") 'sp-splice-sexp-killing-backward)(define-key cider-mode-map (kbd "C-, C-A") 'sp-splice-sexp-killing-backward)(define-key evil-normal-state-map ",D" 'sp-splice-sexp-killing-forward)(define-key cider-mode-map (kbd "C-, D") 'sp-splice-sexp-killing-forward)(define-key cider-mode-map (kbd "C-, C-D") 'sp-splice-sexp-killing-forward)(define-key evil-normal-state-map ",F" 'sp-splice-sexp-killing-around)(define-key cider-mode-map (kbd "C-, F") 'sp-splice-sexp-killing-around)(define-key cider-mode-map (kbd "C-, C-F") 'sp-splice-sexp-killing-around))(progn ;; barf/slurp(define-key evil-normal-state-map ",," 'sp-backward-barf-sexp)(define-key cider-mode-map (kbd "C-, ,") 'sp-backward-barf-sexp)(define-key cider-mode-map (kbd "C-, C-,") 'sp-backward-barf-sexp)(define-key evil-normal-state-map ",." 'sp-forward-barf-sexp)(define-key cider-mode-map (kbd "C-, .") 'sp-forward-barf-sexp)(define-key cider-mode-map (kbd "C-, C-.") 'sp-forward-barf-sexp)(define-key evil-normal-state-map ",<" 'sp-backward-slurp-sexp)(define-key cider-mode-map (kbd "C-, <") 'sp-backward-slurp-sexp)(define-key cider-mode-map (kbd "C-, C-<") 'sp-backward-slurp-sexp)(define-key evil-normal-state-map ",>" 'sp-forward-slurp-sexp)(define-key cider-mode-map (kbd "C-, >") 'sp-forward-slurp-sexp)(define-key cider-mode-map (kbd "C-, C->") 'sp-forward-slurp-sexp))(progn ;; misc(define-key evil-normal-state-map ",~" 'sp-convolute-sexp)(define-key evil-normal-state-map ",a" 'sp-absorb-sexp)(define-key evil-normal-state-map ",e" 'sp-emit-sexp)(define-key evil-normal-state-map ",`" 'sp-clone-sexp)(define-key evil-normal-state-map ",J" 'sp-join-sexp)(define-key evil-normal-state-map ",|" 'sp-split-sexp))(define-key evil-normal-state-map ",w$" 'wrap-in-dollar-brace)(define-key evil-normal-state-map ",w{" 'sp-wrap-curly)(define-key evil-normal-state-map ",w}" 'sp-wrap-curly)(define-key evil-normal-state-map ",w[" 'sp-wrap-square)(define-key evil-normal-state-map ",w]" 'sp-wrap-square)(define-key evil-normal-state-map ",w\"" 'wrap-with-doublequote)(define-key cider-mode-map (kbd "C-, w \"") 'sp-wrap-doublequote))(define-key global-map (kbd "C-, w [") 'sp-wrap-square)(define-key global-map (kbd "C-, <escape>") 'sp-wrap-square)(define-key global-map (kbd "C-, [") 'sp-wrap-square)(define-key global-map (kbd "C-, w ]") 'sp-wrap-square)(define-key global-map (kbd "C-, C-]") 'sp-wrap-square)(define-key global-map (kbd "C-, ]") 'sp-wrap-square)(define-key global-map (kbd "C-, {") 'sp-wrap-curly)(define-key global-map (kbd "C-, C-{") 'sp-wrap-curly)(define-key global-map (kbd "C-, }") 'sp-wrap-curly)(define-key global-map (kbd "C-, C-}") 'sp-wrap-curly)(define-key global-map (kbd "C-, w {") 'sp-wrap-curly)(define-key global-map (kbd "C-, w }") 'sp-wrap-curly)(define-key evil-normal-state-map (kbd "C-, $") 'wrap-in-dollar-brace)(define-key evil-normal-state-map ",w(" 'sp-wrap-round)(define-key evil-normal-state-map ",w)" 'sp-wrap-round)(define-key global-map (kbd "C-, (") 'sp-wrap-round)(define-key global-map (kbd "C-, C-(") 'sp-wrap-round)(define-key global-map (kbd "C-, )") 'sp-wrap-round)(define-key global-map (kbd "C-, C-)") 'sp-wrap-round)(progn ;; wrapping(define-key evil-normal-state-map ",W" 'sp-wrap-round)(define-key evil-normal-state-map (kbd "C-, W") 'sp-wrap-round)(define-key evil-normal-state-map (kbd "C-, C-W") 'sp-wrap-round)(use-package evil-surround:ensure t:after evil:config(global-evil-surround-mode))(use-package evil-leader:after evil:config (evil-leader/set-leader "ß"))(use-package evil-smartparens:ensure t:after evil smartparens:config(evil-smartparens-mode 1):ensure t(progn ;; workaround until this fixed: https://github.com/emacs-evil/evil/issues/1129;; or this: https://github.com/emacs-evil/evil/pull/1130(defun config/fix-evil-window-move (orig-fun &rest args)"Close Treemacs while moving windows around."(dolist (func '(evil-window-move-far-leftevil-window-move-far-rightevil-window-move-very-topevil-window-move-very-bottom))(advice-add func:around #'config/fix-evil-window-move))))(if (fboundp 'treemacs-get-local-window)(let* ((treemacs-window (treemacs-get-local-window))(is-active (and treemacs-window (window-live-p treemacs-window))))(when is-active (treemacs))(apply orig-fun args)(when is-active(save-selected-window(treemacs))))(apply orig-fun args)))(define-key evil-motion-state-map (kbd "C-w C-w") 'evil-window-mru)(define-key evil-normal-state-map "ZZ" 'save-buffer)(define-key evil-motion-state-map (kbd "C-w C-o") 'fwoar-delete-mru-window)
;;;; SLIME SETUP {{{;; (load (expand-file-name "~/quicklisp/slime-helper.el"))(add-to-list 'load-path "~/git_repos/3dp/slime/")(require 'slime)(use-package slime-company:ensure t)(global-set-key (kbd "C-c x") 'slime-export-symbol-at-point)(when (and (boundp 'common-lisp-hyperspec-root)(string-prefix-p "/" common-lisp-hyperspec-root))(setq common-lisp-hyperspec-root(concat "file://" common-lisp-hyperspec-root)));; Replace "sbcl" with the path to your implementation(setq inferior-lisp-program "~/sbcl/bin/sbcl")(add-hook 'lisp-mode-hook'(lambda ();;(define-key evil-insert-state-map "^N" 'slime-fuzzy-indent-and-complete-symbol);; (unless (string= "*slime-scratch*" (buffer-name));; (paredit-mode);; (evil-paredit-mode))(rainbow-delimiters-mode)))(setq slime-contribs'(slime-fancyslime-companyslime-macrostepslime-trace-dialogslime-mdot-fu))(modify-syntax-entry ?- "w" lisp-mode-syntax-table)(modify-syntax-entry ?* "w" lisp-mode-syntax-table)(modify-syntax-entry ?+ "w" lisp-mode-syntax-table)(modify-syntax-entry ?! "w" lisp-mode-syntax-table)(modify-syntax-entry ?$ "w" lisp-mode-syntax-table)(modify-syntax-entry ?% "w" lisp-mode-syntax-table)(modify-syntax-entry ?& "w" lisp-mode-syntax-table)(modify-syntax-entry ?% "w" lisp-mode-syntax-table)(modify-syntax-entry ?= "w" lisp-mode-syntax-table)(modify-syntax-entry ?< "w" lisp-mode-syntax-table)(modify-syntax-entry ?> "w" lisp-mode-syntax-table)(modify-syntax-entry 91 "(" lisp-mode-syntax-table)(modify-syntax-entry 93 ")" lisp-mode-syntax-table);;(modify-syntax-entry ?@ "w" lisp-mode-syntax-table)(modify-syntax-entry ?^ "w" lisp-mode-syntax-table)(modify-syntax-entry ?_ "w" lisp-mode-syntax-table)(modify-syntax-entry ?~ "w" lisp-mode-syntax-table)(modify-syntax-entry ?. "w" lisp-mode-syntax-table)(setq shr-inhibit-images tshr-use-fonts nil)(defun fwoar--clhs-lookup (&rest args)(let ((browse-url-browser-function 'eww-browse-url))(hyperspec-lookup (word-at-point))))(pushnew (list ?h "Check hyperspec" #'fwoar--clhs-lookup)slime-selector-methods:key #'car)(defun fwoar--slime-find-system ()(let ((systems (directory-files(locate-dominating-file default-directory(lambda (n)(directory-files n nil "^[^.#][^#]*[.]asd$")))t "^[^.#][^#]*[.]asd$")))(find-file (if (not (null (cdr systems)))(helm-comp-read "system:" systems)(car systems)))))(pushnew (list ?S "Goto System" #'fwoar--slime-find-system)slime-selector-methods:key #'car);;;;; }}}
(use-package evil:ensure t:config(advice-add 'evil-delete-marks :after(lambda (&rest args)(evil-visual-mark-render)))(evil-define-key 'normal lisp-mode-map " o" 'slime-selector)(define-key evil-insert-state-map (kbd "TAB") 'company-indent-or-complete-common)(evil-mode)(use-package evil-smartparens:ensure t:after smartparens:config(evil-smartparens-mode 1)(progn ;; wrapping(define-key evil-normal-state-map ",W" 'sp-wrap-round)(define-key evil-normal-state-map ",w(" 'sp-wrap-round)(define-key evil-normal-state-map ",w)" 'sp-wrap-round)(define-key evil-normal-state-map ",w{" 'sp-wrap-curly)(define-key evil-normal-state-map ",w}" 'sp-wrap-curly)(define-key evil-normal-state-map ",w[" 'sp-wrap-square)(define-key evil-normal-state-map ",w]" 'sp-wrap-square))(progn ;; splicing(define-key evil-normal-state-map ",S" 'sp-splice-sexp)(define-key evil-normal-state-map ",A" 'sp-splice-sexp-killing-backward)(define-key evil-normal-state-map ",D" 'sp-splice-sexp-killing-forward)(define-key evil-normal-state-map ",F" 'sp-splice-sexp-killing-around))(progn ;; barf/slurp(define-key evil-normal-state-map ",," 'sp-backward-barf-sexp)(define-key evil-normal-state-map ",." 'sp-forward-barf-sexp)(define-key evil-normal-state-map ",<" 'sp-backward-slurp-sexp)(define-key evil-normal-state-map ",>" 'sp-forward-slurp-sexp))(progn ;; misc(define-key evil-normal-state-map ",~" 'sp-convolute-sexp)(define-key evil-normal-state-map ",a" 'sp-absorb-sexp)(define-key evil-normal-state-map ",e" 'sp-emit-sexp)(define-key evil-normal-state-map ",`" 'sp-clone-sexp)(define-key evil-normal-state-map ",J" 'sp-join-sexp)(define-key evil-normal-state-map ",|" 'sp-split-sexp))(progn ;; narrowing(define-key evil-normal-state-map " n(" 'sp-narrow-to-sexp)(define-key evil-normal-state-map " n)" 'sp-narrow-to-sexp)(define-key evil-normal-state-map " nn" 'narrow-to-defun)(define-key evil-normal-state-map " nr" 'narrow-to-region)(define-key evil-normal-state-map " nw" 'widen)))(progn ;; navigation(define-key evil-normal-state-map " f" 'helm-projectile)(define-key evil-normal-state-map " j" 'helm-buffers-list)(define-key evil-normal-state-map " u" 'undo-tree-visualize))(progn ;; completion(define-key evil-normal-state-map (kbd "TAB") 'company-indent-or-complete-common)(define-key evil-insert-state-map (kbd "TAB") 'company-indent-or-complete-common));; (use-package evil-paredit;; :ensure t;; :after paredit;; :config;; (evil-paredit-mode));;(use-package evil-numbers;; :ensure t;; :config;; (global-set-key (kbd "C-c +") 'evil-numbers/inc-at-pt);; (global-set-key (kbd "C-c -") 'evil-numbers/dec-at-pt))(use-package evil-surround:ensure t:config(global-evil-surround-mode))(use-package evil-leader:config (evil-leader/set-leader "ß")))
;;;; SLIME SETUP {{{;; (load (expand-file-name "~/quicklisp/slime-helper.el"))(add-to-list 'load-path (fwoar-git-repo "3dp/slime/""git@github.com:slime/slime.git""https://github.com/slime/slime.git"))(require 'slime)(use-package slime-company:ensure t);; put slime-company in load-path;; (require 'slime-company)(defmacro define-lisp-implementations (&rest decl)`(progn,@(cl-loop for (symbol . args) in declcollect `(progn(defun ,symbol ()(interactive)(slime ',symbol))(cl-pushnew '(,symbol ,@args) slime-lisp-implementations:key 'car)))))(with-eval-after-load "slime"(when (or (eq system-type 'gnu/linux)(eq system-type 'darwin))(define-lisp-implementations(abcl ("abcl"))(ccl ("ccl"))(clisp ("clisp"))(cmucl ("cmucl" "-quiet"))(ecl ("ecl"));;(mkcl ("mkcl"));;(xcl ("xcl"))(sbcl ("sbcl" "--dynamic-space-size" "8192")))))(global-set-key (kbd "C-c x") 'slime-export-symbol-at-point)(when (and (boundp 'common-lisp-hyperspec-root)(string-prefix-p "/" common-lisp-hyperspec-root))(setq common-lisp-hyperspec-root(concat "file://" common-lisp-hyperspec-root)));; Replace "sbcl" with the path to your implementation(setq inferior-lisp-program "~/sbcl/bin/sbcl")(defun setup-lisp-mode ()(unless (string= "*slime-scratch*" (buffer-name))(smartparens-strict-mode 1)(evil-smartparens-mode 1)(aggressive-indent-mode 1))(define-key evil-insert-state-map "^N" 'slime-fuzzy-indent-and-complete-symbol)(rainbow-delimiters-mode))(add-hook 'lisp-mode-hook 'setup-lisp-mode)(add-hook 'emacs-lisp-mode-hook 'setup-lisp-mode)(evil-define-key 'normal lisp-mode-map "gd" 'slime-edit-definition)(modify-syntax-entry ?- "w" lisp-mode-syntax-table)(modify-syntax-entry ?* "w" lisp-mode-syntax-table)(modify-syntax-entry ?+ "w" lisp-mode-syntax-table)(modify-syntax-entry ?! "w" lisp-mode-syntax-table)(modify-syntax-entry ?$ "w" lisp-mode-syntax-table)(modify-syntax-entry ?% "w" lisp-mode-syntax-table)(modify-syntax-entry ?& "w" lisp-mode-syntax-table)(modify-syntax-entry ?% "w" lisp-mode-syntax-table)(modify-syntax-entry ?= "w" lisp-mode-syntax-table)(modify-syntax-entry ?< "w" lisp-mode-syntax-table)(modify-syntax-entry ?> "w" lisp-mode-syntax-table)(modify-syntax-entry 91 "(" lisp-mode-syntax-table)(modify-syntax-entry 93 ")" lisp-mode-syntax-table);;(modify-syntax-entry ?@ "w" lisp-mode-syntax-table)(modify-syntax-entry ?^ "w" lisp-mode-syntax-table)(modify-syntax-entry ?_ "w" lisp-mode-syntax-table)(modify-syntax-entry ?~ "w" lisp-mode-syntax-table)(modify-syntax-entry ?. "w" lisp-mode-syntax-table)(modify-syntax-entry ?\[ "(]" lisp-mode-syntax-table)(modify-syntax-entry ?\] ")[" lisp-mode-syntax-table)(modify-syntax-entry ?\{ "(}" lisp-mode-syntax-table)(modify-syntax-entry ?\} "){" lisp-mode-syntax-table)(setq shr-inhibit-images tshr-use-fonts nil)(defun fwoar--clhs-lookup (&rest args)(let ((browse-url-browser-function 'eww-browse-url))(hyperspec-lookup (word-at-point))))(pushnew (list ?h "Check hyperspec" #'fwoar--clhs-lookup)slime-selector-methods:key #'car)(defun fwoar--get-asds ()(let ((dir-of-asd (locate-dominating-file default-directory(lambda (n)(directory-files n nil "^[^.#][^#]*[.]asd$")))))(when dir-of-asd(directory-files dir-of-asdt "^[^.#][^#]*[.]asd$"))))(cl-defgeneric fwoar--find-system ())(cl-defmethod fwoar--find-system (&context (major-mode lisp-mode))(let ((systems (fwoar--get-asds)))(find-file (if (not (null (cdr systems)))(helm-comp-read "system:" systems)(car systems)))))(pushnew (list ?S "Goto System" #'fwoar--find-system)slime-selector-methods:key #'car)(defun slime-ecl ()(interactive)(let ((inferior-lisp-program "ecl")(slime-lisp-implementations nil))(slime)))(defun slime-cmucl ()(interactive)(let ((inferior-lisp-program "cmucl")(slime-lisp-implementations nil))(slime)))(defun slime-sbcl ()(interactive)(let ((inferior-lisp-program "sbcl")(slime-lisp-implementations nil))(slime)))(defun slime-ccl ()(interactive)(let ((inferior-lisp-program "ccl")(slime-lisp-implementations nil))(slime)))(defun find-use-clause (current-form)(when current-form(destructuring-bind (discriminator . packages) current-form(case discriminator(:use (remove-if (op (or (eql :cl _)))(cdr current-form)))(defpackage (find-use-clause(find-if (lambda (f)(and (listp f)(eql (car f) :use)))'(defpackage :tracking-sim (:use :cl :alexandria :serapeum) (:export)))))))))(defun load-package-uses ()(interactive)(slime-eval-async `(ql:quickload ',(find-use-clause (list-at-point)))));;(message (format "s-c-c is: %s" slime-company-completion));;;;; }}}(defun sp-absorb-forward-sexp (&optional arg)"Absorb previous expression.Save the expressions preceding point and delete them. Then slurpan expression backward and insert the saved expressions.With ARG positive N, absorb that many expressions.Examples: (do-stuff 1) (save-excursion (save-excursion -> |(do-stuff 1) |(do-stuff 2)) (do-stuff 2))foo bar (concat |baz quux) -> (concat |foo bar baz quux) ;; 2"(interactive "p")(sp-forward-whitespace)(let* ((old (point))(raise (progn(sp-end-of-sexp)(buffer-substring (point) old))))(delete-region old (point))(sp-forward-slurp-sexp arg)(sp-backward-whitespace)(sp-end-of-sexp)(insert raise)(save-excursion(sp-backward-up-sexp)(indent-sexp)))(sp-backward-whitespace))(setq slime-contribs '(slime-fancyslime-companyslime-macrostepslime-trace-dialogslime-mdot-fuslime-buffer-streamsslime-indentation)slime-export-save-file t)(slime-setup slime-contribs)(defslime-repl-shortcut fwoar--slime-repl-load-asd ("load-asd")(:handler (lambda ()(interactive)(let ((system-files (fwoar--get-asds)))(slime-eval-async (cons 'cl:progn(mapcar (lambda (it)`(cl:progn (asdf:load-asd ,it) ,it))system-files))(lambda (r)(message "Loading ASDs done: %s" r))))))(:one-liner "Load asd for current project"))(comment (defslime-repl-shortcut fwoar--slime-repl-quickload ("quickload")(:handler (lambda ()(interactive)(let ((system-files (fwoar--get-asds)))(slime-eval-async (cons 'cl:progn(mapcar (lambda (it)`(cl:progn (asdf:load-asd ,it) ,it))system-files))(lambda (r)(message "Loading ASDs done: %s" r))))))(:one-liner "Load asd for current project")))
(defun wrap-with-doublequote (&optional arg)(interactive "P")(sp-wrap-with-pair "\""))(defun wrap-in-dollar-brace(&optional arg)(interactive "P")(sp-wrap-with-pair "${"))(defun fwoar-delete-mru-window ()(interactive)(delete-window(get-mru-window nil nil t)))(use-package evil:ensure t:config(define-key evil-motion-state-map (kbd "C-w C-o") 'fwoar-delete-mru-window)(define-key evil-motion-state-map (kbd "C-w C-w") 'evil-window-mru)(define-key evil-normal-state-map "ZZ" 'save-buffer)(advice-add 'evil-delete-marks :after(lambda (&rest args)(evil-visual-mark-render)))(define-key evil-insert-state-map (kbd "TAB") 'company-indent-or-complete-common)(evil-mode)(progn ;; navigation(define-key evil-normal-state-map " f" 'helm-projectile)(define-key evil-normal-state-map " j" 'helm-buffers-list)(define-key evil-normal-state-map " u" 'undo-tree-visualize))(progn ;; completion(define-key evil-normal-state-map (kbd "TAB") 'company-indent-or-complete-common)(define-key evil-insert-state-map (kbd "TAB") 'company-indent-or-complete-common))(progn ;; workaround until this fixed: https://github.com/emacs-evil/evil/issues/1129;; or this: https://github.com/emacs-evil/evil/pull/1130(defun config/fix-evil-window-move (orig-fun &rest args)"Close Treemacs while moving windows around."(if (fboundp 'treemacs-get-local-window)(let* ((treemacs-window (treemacs-get-local-window))(is-active (and treemacs-window (window-live-p treemacs-window))))(when is-active (treemacs))(apply orig-fun args)(when is-active(save-selected-window(treemacs))))(apply orig-fun args)))(dolist (func '(evil-window-move-far-leftevil-window-move-far-rightevil-window-move-very-topevil-window-move-very-bottom))(advice-add func:around #'config/fix-evil-window-move))))(use-package evil-surround:ensure t:after evil:config(global-evil-surround-mode))(use-package evil-leader:ensure t:after evil:config (evil-leader/set-leader "ß"))(use-package evil-smartparens:ensure t:after evil smartparens:config(evil-smartparens-mode 1)(progn ;; wrapping(define-key evil-normal-state-map ",W" 'sp-wrap-round)(define-key evil-normal-state-map (kbd "C-, W") 'sp-wrap-round)(define-key evil-normal-state-map (kbd "C-, C-W") 'sp-wrap-round)(define-key evil-normal-state-map ",w(" 'sp-wrap-round)(define-key evil-normal-state-map ",w)" 'sp-wrap-round)(define-key global-map (kbd "C-, (") 'sp-wrap-round)(define-key global-map (kbd "C-, C-(") 'sp-wrap-round)(define-key global-map (kbd "C-, )") 'sp-wrap-round)(define-key global-map (kbd "C-, C-)") 'sp-wrap-round)(define-key evil-normal-state-map ",w$" 'wrap-in-dollar-brace)(define-key evil-normal-state-map (kbd "C-, $") 'wrap-in-dollar-brace)(define-key evil-normal-state-map ",w{" 'sp-wrap-curly)(define-key evil-normal-state-map ",w}" 'sp-wrap-curly)(define-key global-map (kbd "C-, {") 'sp-wrap-curly)(define-key global-map (kbd "C-, C-{") 'sp-wrap-curly)(define-key global-map (kbd "C-, }") 'sp-wrap-curly)(define-key global-map (kbd "C-, C-}") 'sp-wrap-curly)(define-key global-map (kbd "C-, w {") 'sp-wrap-curly)(define-key global-map (kbd "C-, w }") 'sp-wrap-curly)(define-key evil-normal-state-map ",w[" 'sp-wrap-square)(define-key evil-normal-state-map ",w]" 'sp-wrap-square)(define-key global-map (kbd "C-, w [") 'sp-wrap-square)(define-key global-map (kbd "C-, <escape>") 'sp-wrap-square)(define-key global-map (kbd "C-, [") 'sp-wrap-square)(define-key global-map (kbd "C-, w ]") 'sp-wrap-square)(define-key global-map (kbd "C-, C-]") 'sp-wrap-square)(define-key global-map (kbd "C-, ]") 'sp-wrap-square)(define-key evil-normal-state-map ",w\"" 'wrap-with-doublequote)(define-key cider-mode-map (kbd "C-, w \"") 'sp-wrap-doublequote))(progn ;; splicing(define-key evil-normal-state-map ",S" 'sp-splice-sexp)(define-key cider-mode-map (kbd "C-, S") 'sp-splice-sexp)(define-key cider-mode-map (kbd "C-, C-S") 'sp-splice-sexp)(define-key evil-normal-state-map ",A" 'sp-splice-sexp-killing-backward)(define-key cider-mode-map (kbd "C-, A") 'sp-splice-sexp-killing-backward)(define-key cider-mode-map (kbd "C-, C-A") 'sp-splice-sexp-killing-backward)(define-key evil-normal-state-map ",D" 'sp-splice-sexp-killing-forward)(define-key cider-mode-map (kbd "C-, D") 'sp-splice-sexp-killing-forward)(define-key cider-mode-map (kbd "C-, C-D") 'sp-splice-sexp-killing-forward)(define-key evil-normal-state-map ",F" 'sp-splice-sexp-killing-around)(define-key cider-mode-map (kbd "C-, F") 'sp-splice-sexp-killing-around)(define-key cider-mode-map (kbd "C-, C-F") 'sp-splice-sexp-killing-around))(progn ;; barf/slurp(define-key evil-normal-state-map ",," 'sp-backward-barf-sexp)(define-key cider-mode-map (kbd "C-, ,") 'sp-backward-barf-sexp)(define-key cider-mode-map (kbd "C-, C-,") 'sp-backward-barf-sexp)(define-key evil-normal-state-map ",." 'sp-forward-barf-sexp)(define-key cider-mode-map (kbd "C-, .") 'sp-forward-barf-sexp)(define-key cider-mode-map (kbd "C-, C-.") 'sp-forward-barf-sexp)(define-key evil-normal-state-map ",<" 'sp-backward-slurp-sexp)(define-key cider-mode-map (kbd "C-, <") 'sp-backward-slurp-sexp)(define-key cider-mode-map (kbd "C-, C-<") 'sp-backward-slurp-sexp)(define-key evil-normal-state-map ",>" 'sp-forward-slurp-sexp)(define-key cider-mode-map (kbd "C-, >") 'sp-forward-slurp-sexp)(define-key cider-mode-map (kbd "C-, C->") 'sp-forward-slurp-sexp))(progn ;; misc(define-key evil-normal-state-map ",~" 'sp-convolute-sexp)(define-key evil-normal-state-map ",a" 'sp-absorb-sexp)(define-key evil-normal-state-map ",e" 'sp-emit-sexp)(define-key evil-normal-state-map ",`" 'sp-clone-sexp)(define-key evil-normal-state-map ",J" 'sp-join-sexp)(define-key evil-normal-state-map ",|" 'sp-split-sexp))(progn ;; narrowing(define-key evil-normal-state-map " n(" 'sp-narrow-to-sexp)(define-key evil-normal-state-map " n)" 'sp-narrow-to-sexp)(define-key evil-normal-state-map " nn" 'narrow-to-defun)(define-key evil-normal-state-map " nr" 'narrow-to-region)(define-key evil-normal-state-map " nw" 'widen)))(use-package centaur-tabs:ensure t:after evil:config(setq centaur-tabs-adjust-buffer-order tcentaur-tabs-adjust-buffer-order 'left)(centaur-tabs-enable-buffer-reordering)(define-key evil-normal-state-map "gt" 'centaur-tabs-forward-tab)(define-key global-map (kbd "<header-line> <wheel-up>") 'centaur-tabs-forward-tab)(define-key global-map (kbd "s-}") 'centaur-tabs-forward-tab)(define-key evil-normal-state-map "gT" 'centaur-tabs-backward-tab)(define-key global-map (kbd "<header-line> <wheel-down>") 'centaur-tabs-backward-tab)(define-key global-map (kbd "s-{") 'centaur-tabs-backward-tab))
;;;; SLIME SETUP {{{;; (load (expand-file-name "~/quicklisp/slime-helper.el"))(add-to-list 'load-path (fwoar-git-repo "3dp/slime/""git@github.com:slime/slime.git""https://github.com/slime/slime.git"))(require 'slime)(use-package slime-company:ensure t);; put slime-company in load-path;; (require 'slime-company)(defmacro define-lisp-implementations (&rest decl)`(progn,@(cl-loop for (symbol . args) in declcollect `(progn(defun ,symbol ()(interactive)(slime ',symbol))(cl-pushnew '(,symbol ,@args) slime-lisp-implementations:key 'car)))))(with-eval-after-load "slime"(when (or (eq system-type 'gnu/linux)(eq system-type 'darwin))(define-lisp-implementations(abcl ("abcl"))(ccl ("ccl"))(clisp ("clisp"))(cmucl ("cmucl" "-quiet"))(ecl ("ecl"));;(mkcl ("mkcl"));;(xcl ("xcl"))(sbcl ("sbcl" "--dynamic-space-size" "8192")))))(global-set-key (kbd "C-c x") 'slime-export-symbol-at-point)(when (and (boundp 'common-lisp-hyperspec-root)(string-prefix-p "/" common-lisp-hyperspec-root))(setq common-lisp-hyperspec-root(concat "file://" common-lisp-hyperspec-root)));; Replace "sbcl" with the path to your implementation(setq inferior-lisp-program "~/sbcl/bin/sbcl")(defun setup-lisp-mode ()(unless (string= "*slime-scratch*" (buffer-name))(smartparens-strict-mode 1)(evil-smartparens-mode 1)(aggressive-indent-mode 1))(define-key evil-insert-state-map "^N" 'slime-fuzzy-indent-and-complete-symbol)(rainbow-delimiters-mode))(add-hook 'lisp-mode-hook 'setup-lisp-mode)(add-hook 'emacs-lisp-mode-hook 'setup-lisp-mode)(evil-define-key 'normal lisp-mode-map "gd" 'slime-edit-definition)(modify-syntax-entry ?- "w" lisp-mode-syntax-table)(modify-syntax-entry ?* "w" lisp-mode-syntax-table)(modify-syntax-entry ?+ "w" lisp-mode-syntax-table)(modify-syntax-entry ?! "w" lisp-mode-syntax-table)(modify-syntax-entry ?$ "w" lisp-mode-syntax-table)(modify-syntax-entry ?% "w" lisp-mode-syntax-table)(modify-syntax-entry ?& "w" lisp-mode-syntax-table)(modify-syntax-entry ?% "w" lisp-mode-syntax-table)(modify-syntax-entry ?= "w" lisp-mode-syntax-table)(modify-syntax-entry ?< "w" lisp-mode-syntax-table)(modify-syntax-entry ?> "w" lisp-mode-syntax-table)(modify-syntax-entry 91 "(" lisp-mode-syntax-table)(modify-syntax-entry 93 ")" lisp-mode-syntax-table);;(modify-syntax-entry ?@ "w" lisp-mode-syntax-table)(modify-syntax-entry ?^ "w" lisp-mode-syntax-table)(modify-syntax-entry ?_ "w" lisp-mode-syntax-table)(modify-syntax-entry ?~ "w" lisp-mode-syntax-table)(modify-syntax-entry ?. "w" lisp-mode-syntax-table)(modify-syntax-entry ?\[ "(]" lisp-mode-syntax-table)(modify-syntax-entry ?\] ")[" lisp-mode-syntax-table)(modify-syntax-entry ?\{ "(}" lisp-mode-syntax-table)(modify-syntax-entry ?\} "){" lisp-mode-syntax-table)(setq shr-inhibit-images tshr-use-fonts nil)(defun fwoar--clhs-lookup (&rest args)(let ((browse-url-browser-function 'eww-browse-url))(hyperspec-lookup (word-at-point))))(pushnew (list ?h "Check hyperspec" #'fwoar--clhs-lookup)slime-selector-methods:key #'car)(defun fwoar--get-asds ()(let ((dir-of-asd (locate-dominating-file default-directory(lambda (n)(directory-files n nil "^[^.#][^#]*[.]asd$")))))(when dir-of-asd(directory-files dir-of-asdt "^[^.#][^#]*[.]asd$"))))(cl-defgeneric fwoar--find-system ())(cl-defmethod fwoar--find-system (&context (major-mode lisp-mode))(let ((systems (fwoar--get-asds)))(find-file (if (not (null (cdr systems)))(helm-comp-read "system:" systems)(car systems)))))(pushnew (list ?S "Goto System" #'fwoar--find-system)slime-selector-methods:key #'car)(defun slime-ecl ()(interactive)(let ((inferior-lisp-program "ecl")(slime-lisp-implementations nil))(slime)))(defun slime-cmucl ()(interactive)(let ((inferior-lisp-program "cmucl")(slime-lisp-implementations nil))(slime)))(defun slime-sbcl ()(interactive)(let ((inferior-lisp-program "sbcl")(slime-lisp-implementations nil))(slime)))(defun slime-ccl ()(interactive)(let ((inferior-lisp-program "ccl")(slime-lisp-implementations nil))(slime)))(defun find-use-clause (current-form)(when current-form(destructuring-bind (discriminator . packages) current-form(case discriminator(:use (remove-if (op (or (eql :cl _)))(cdr current-form)))(defpackage (find-use-clause(find-if (lambda (f)(and (listp f)(eql (car f) :use)))'(defpackage :tracking-sim (:use :cl :alexandria :serapeum) (:export)))))))))(defun load-package-uses ()(interactive)(slime-eval-async `(ql:quickload ',(find-use-clause (list-at-point)))));;(message (format "s-c-c is: %s" slime-company-completion));;;;; }}}(defun sp-absorb-forward-sexp (&optional arg)"Absorb previous expression.Save the expressions preceding point and delete them. Then slurpan expression backward and insert the saved expressions.With ARG positive N, absorb that many expressions.Examples: (do-stuff 1) (save-excursion (save-excursion -> |(do-stuff 1) |(do-stuff 2)) (do-stuff 2))foo bar (concat |baz quux) -> (concat |foo bar baz quux) ;; 2"(interactive "p")(sp-forward-whitespace)(let* ((old (point))(raise (progn(sp-end-of-sexp)(buffer-substring (point) old))))(delete-region old (point))(sp-forward-slurp-sexp arg)(sp-backward-whitespace)(sp-end-of-sexp)(insert raise)(save-excursion(sp-backward-up-sexp)(indent-sexp)))(sp-backward-whitespace))(setq slime-contribs '(slime-fancyslime-companyslime-macrostepslime-trace-dialogslime-mdot-fuslime-buffer-streamsslime-indentation)slime-export-save-file t)(slime-setup slime-contribs)(defslime-repl-shortcut fwoar--slime-repl-load-asd ("load-asd")(:handler (lambda ()(interactive)(let ((system-files (fwoar--get-asds)))(slime-eval-async (cons 'cl:progn(mapcar (lambda (it)`(cl:progn (asdf:load-asd ,it) ,it))system-files))(lambda (r)(message "Loading ASDs done: %s" r))))))(:one-liner "Load asd for current project"))(comment (defslime-repl-shortcut fwoar--slime-repl-quickload ("quickload")(:handler (lambda ()(interactive)(let ((system-files (fwoar--get-asds)))(slime-eval-async (cons 'cl:progn(mapcar (lambda (it)`(cl:progn (asdf:load-asd ,it) ,it))system-files))(lambda (r)(message "Loading ASDs done: %s" r))))))(:one-liner "Load asd for current project")))
(defun wrap-with-doublequote (&optional arg)(interactive "P")(sp-wrap-with-pair "\""))(defun wrap-in-dollar-brace(&optional arg)(interactive "P")(sp-wrap-with-pair "${"))(defun fwoar-delete-mru-window ()(interactive)(delete-window(get-mru-window nil nil t)))(use-package evil:ensure t:config(define-key evil-motion-state-map (kbd "C-w C-o") 'fwoar-delete-mru-window)(define-key evil-motion-state-map (kbd "C-w C-w") 'evil-window-mru)(define-key evil-normal-state-map "ZZ" 'save-buffer)(advice-add 'evil-delete-marks :after(lambda (&rest args)(evil-visual-mark-render)))(define-key evil-insert-state-map (kbd "TAB") 'company-indent-or-complete-common)(evil-mode)(progn ;; navigation(define-key evil-normal-state-map " f" 'helm-projectile)(define-key evil-normal-state-map " j" 'helm-buffers-list)(define-key evil-normal-state-map " u" 'undo-tree-visualize))(progn ;; completion(define-key evil-normal-state-map (kbd "TAB") 'company-indent-or-complete-common)(define-key evil-insert-state-map (kbd "TAB") 'company-indent-or-complete-common))(progn ;; workaround until this fixed: https://github.com/emacs-evil/evil/issues/1129;; or this: https://github.com/emacs-evil/evil/pull/1130(defun config/fix-evil-window-move (orig-fun &rest args)"Close Treemacs while moving windows around."(if (fboundp 'treemacs-get-local-window)(let* ((treemacs-window (treemacs-get-local-window))(is-active (and treemacs-window (window-live-p treemacs-window))))(when is-active (treemacs))(apply orig-fun args)(when is-active(save-selected-window(treemacs))))(apply orig-fun args)))(dolist (func '(evil-window-move-far-leftevil-window-move-far-rightevil-window-move-very-topevil-window-move-very-bottom))(advice-add func:around #'config/fix-evil-window-move))))(use-package evil-surround:ensure t:after evil:config(global-evil-surround-mode))(use-package evil-leader:ensure t:after evil:config (evil-leader/set-leader "ß"))(use-package evil-smartparens:ensure t:after evil smartparens:config(evil-smartparens-mode 1)(progn ;; wrapping(define-key evil-normal-state-map ",W" 'sp-wrap-round)(define-key evil-normal-state-map (kbd "C-, W") 'sp-wrap-round)(define-key evil-normal-state-map (kbd "C-, C-W") 'sp-wrap-round)(define-key evil-normal-state-map ",w(" 'sp-wrap-round)(define-key evil-normal-state-map ",w)" 'sp-wrap-round)(define-key global-map (kbd "C-, (") 'sp-wrap-round)(define-key global-map (kbd "C-, C-(") 'sp-wrap-round)(define-key global-map (kbd "C-, )") 'sp-wrap-round)(define-key global-map (kbd "C-, C-)") 'sp-wrap-round)(define-key evil-normal-state-map ",w$" 'wrap-in-dollar-brace)(define-key evil-normal-state-map (kbd "C-, $") 'wrap-in-dollar-brace)(define-key evil-normal-state-map ",w{" 'sp-wrap-curly)(define-key evil-normal-state-map ",w}" 'sp-wrap-curly)(define-key global-map (kbd "C-, {") 'sp-wrap-curly)(define-key global-map (kbd "C-, C-{") 'sp-wrap-curly)(define-key global-map (kbd "C-, }") 'sp-wrap-curly)(define-key global-map (kbd "C-, C-}") 'sp-wrap-curly)(define-key global-map (kbd "C-, w {") 'sp-wrap-curly)(define-key global-map (kbd "C-, w }") 'sp-wrap-curly)(define-key evil-normal-state-map ",w[" 'sp-wrap-square)(define-key evil-normal-state-map ",w]" 'sp-wrap-square)(define-key global-map (kbd "C-, w [") 'sp-wrap-square)(define-key global-map (kbd "C-, <escape>") 'sp-wrap-square)(define-key global-map (kbd "C-, [") 'sp-wrap-square)(define-key global-map (kbd "C-, w ]") 'sp-wrap-square)(define-key global-map (kbd "C-, C-]") 'sp-wrap-square)(define-key global-map (kbd "C-, ]") 'sp-wrap-square)(define-key evil-normal-state-map ",w\"" 'wrap-with-doublequote)(define-key cider-mode-map (kbd "C-, w \"") 'sp-wrap-doublequote))(progn ;; splicing(define-key evil-normal-state-map ",S" 'sp-splice-sexp)(define-key cider-mode-map (kbd "C-, S") 'sp-splice-sexp)(define-key cider-mode-map (kbd "C-, C-S") 'sp-splice-sexp)(define-key evil-normal-state-map ",A" 'sp-splice-sexp-killing-backward)(define-key cider-mode-map (kbd "C-, A") 'sp-splice-sexp-killing-backward)(define-key cider-mode-map (kbd "C-, C-A") 'sp-splice-sexp-killing-backward)(define-key evil-normal-state-map ",D" 'sp-splice-sexp-killing-forward)(define-key cider-mode-map (kbd "C-, D") 'sp-splice-sexp-killing-forward)(define-key cider-mode-map (kbd "C-, C-D") 'sp-splice-sexp-killing-forward)(define-key evil-normal-state-map ",F" 'sp-splice-sexp-killing-around)(define-key cider-mode-map (kbd "C-, F") 'sp-splice-sexp-killing-around)(define-key cider-mode-map (kbd "C-, C-F") 'sp-splice-sexp-killing-around))(progn ;; barf/slurp(define-key evil-normal-state-map ",," 'sp-backward-barf-sexp)(define-key cider-mode-map (kbd "C-, ,") 'sp-backward-barf-sexp)(define-key cider-mode-map (kbd "C-, C-,") 'sp-backward-barf-sexp)(define-key evil-normal-state-map ",." 'sp-forward-barf-sexp)(define-key cider-mode-map (kbd "C-, .") 'sp-forward-barf-sexp)(define-key cider-mode-map (kbd "C-, C-.") 'sp-forward-barf-sexp)(define-key evil-normal-state-map ",<" 'sp-backward-slurp-sexp)(define-key cider-mode-map (kbd "C-, <") 'sp-backward-slurp-sexp)(define-key cider-mode-map (kbd "C-, C-<") 'sp-backward-slurp-sexp)(define-key evil-normal-state-map ",>" 'sp-forward-slurp-sexp)(define-key cider-mode-map (kbd "C-, >") 'sp-forward-slurp-sexp)(define-key cider-mode-map (kbd "C-, C->") 'sp-forward-slurp-sexp))(progn ;; misc(define-key evil-normal-state-map ",~" 'sp-convolute-sexp)(define-key evil-normal-state-map ",a" 'sp-absorb-sexp)(define-key evil-normal-state-map ",e" 'sp-emit-sexp)(define-key evil-normal-state-map ",`" 'sp-clone-sexp)(define-key evil-normal-state-map ",J" 'sp-join-sexp)(define-key evil-normal-state-map ",|" 'sp-split-sexp))(progn ;; narrowing(define-key evil-normal-state-map " n(" 'sp-narrow-to-sexp)(define-key evil-normal-state-map " n)" 'sp-narrow-to-sexp)(define-key evil-normal-state-map " nn" 'narrow-to-defun)(define-key evil-normal-state-map " nr" 'narrow-to-region)(define-key evil-normal-state-map " nw" 'widen)))(use-package centaur-tabs:ensure t:after evil:config(setq centaur-tabs-adjust-buffer-order tcentaur-tabs-adjust-buffer-order 'left)(centaur-tabs-enable-buffer-reordering)(define-key evil-normal-state-map "gt" 'centaur-tabs-forward-tab)(define-key global-map (kbd "<header-line> <wheel-up>") 'centaur-tabs-forward-tab)(define-key global-map (kbd "s-}") 'centaur-tabs-forward-tab)(define-key evil-normal-state-map "gT" 'centaur-tabs-backward-tab)(define-key global-map (kbd "<header-line> <wheel-down>") 'centaur-tabs-backward-tab)(define-key global-map (kbd "s-{") 'centaur-tabs-backward-tab))