From 0f643965e47af7b5e05a7ebe6b262378278e15f9 Mon Sep 17 00:00:00 2001 From: laurensmiers Date: Thu, 24 Aug 2017 14:07:12 +0200 Subject: [PATCH] Expand smartparens keymaps + some TODOs --- custom/setup-coding.el | 1 + custom/setup-editing.el | 38 +++++++++++++++++++++++++++++++++++--- custom/setup-general.el | 2 +- 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/custom/setup-coding.el b/custom/setup-coding.el index 3174259..714dd9b 100644 --- a/custom/setup-coding.el +++ b/custom/setup-coding.el @@ -38,6 +38,7 @@ (add-hook 'c-mode-hook 'infer-indentation-style) ;; Enable subword mode for handling CamelCase format +;; TODO: not recognized (subword-mode 1) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/custom/setup-editing.el b/custom/setup-editing.el index cdf770b..a791196 100644 --- a/custom/setup-editing.el +++ b/custom/setup-editing.el @@ -69,6 +69,38 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; keybinding management smartparens ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; cl-package contains the loop macro +(require 'cl) + +(defmacro def-pairs (pairs) + `(progn + ,@(loop for (key . val) in pairs + collect + `(defun ,(read (concat + "wrap-with-" + (prin1-to-string key) + "s")) + (&optional arg) + (interactive "p") + (sp-wrap-with-pair ,val))))) + +(def-pairs ((paren . "(") + (bracket . "[") + (brace . "{") + (single-quote . "'") + (double-quote . "\"") + (underscore . "_") + (back-quote . "`"))) + +(define-key smartparens-mode-map (kbd "C-c (") 'wrap-with-parens) +(define-key smartparens-mode-map (kbd "C-c [") 'wrap-with-brackets) +(define-key smartparens-mode-map (kbd "C-c {") 'wrap-with-braces) +(define-key smartparens-mode-map (kbd "C-c '") 'wrap-with-single-quotes) +(define-key smartparens-mode-map (kbd "C-c \"") 'wrap-with-double-quotes) +(define-key smartparens-mode-map (kbd "C-c _") 'wrap-with-underscores) +(define-key smartparens-mode-map (kbd "C-c `") 'wrap-with-back-quotes) + +(define-key smartparens-mode-map (kbd "C-c s r") 'sp-rewrap-sexp) (define-key smartparens-mode-map (kbd "C-M-f") 'sp-forward-sexp) (define-key smartparens-mode-map (kbd "C-M-b") 'sp-backward-sexp) @@ -80,9 +112,9 @@ (define-key smartparens-mode-map (kbd "C-M-n") 'sp-next-sexp) (define-key smartparens-mode-map (kbd "C-M-p") 'sp-previous-sexp) -;; TODO: this doesn't work for some reason -(define-key smartparens-mode-map (kbd "C-M-a") 'beginning-of-defun) -(define-key smartparens-mode-map (kbd "C-M-e") 'end-of-defun) +;; TODO: for some reason this does not work +(define-key smartparens-mode-map (kbd "C-M-a") 'sp-beginning-of-sexp) +(define-key smartparens-mode-map (kbd "C-M-e") 'sp-end-of-sexp) (define-key smartparens-mode-map (kbd "C-M-h") 'mark-defun) diff --git a/custom/setup-general.el b/custom/setup-general.el index b7404bd..d9608ce 100644 --- a/custom/setup-general.el +++ b/custom/setup-general.el @@ -4,7 +4,7 @@ ;; Package zygospore --- revert C-x 1 by pressing C-x 1 again -;; Doesn't work with sr-speedbar +;; TODO: Doesn't work with sr-speedbar (global-set-key (kbd "C-x 1") 'zygospore-toggle-delete-other-windows) ;; Set 'M-g' to 'goto-line', it's faster and what we usually want