213 lines
7.5 KiB
EmacsLisp
213 lines
7.5 KiB
EmacsLisp
(add-to-list 'load-path "~/.emacs.d/elisp-git/smartparens/")
|
|
|
|
;; (require 'paredit)
|
|
|
|
;; (add-hook 'emacs-lisp-mode-hook 'paredit-mode)
|
|
;; (add-hook 'lisp-mode-hook 'paredit-mode)
|
|
;; (add-hook 'scheme-mode-hook 'paredit-mode)
|
|
;; (add-hook 'inferior-scheme-mode-hook 'paredit-mode)
|
|
;; (add-hook 'inferior-lisp-mode-hook 'paredit-mode)
|
|
;; (add-hook 'ielm-mode-hook 'paredit-mode)
|
|
|
|
;; (global-set-key (kbd "C-x C-p") 'paredit-mode)
|
|
|
|
;; (cp-set-keys
|
|
;; :keymap paredit-mode-map
|
|
;; :bindings
|
|
;; `((,(kbd "C-p") paredit-backward-down)
|
|
;; (,(kbd "C-n") paredit-forward-up)
|
|
;; (,(kbd "C-b") paredit-backward)
|
|
;; (,(kbd "C-f") paredit-forward)
|
|
;; (,(kbd "C-u") paredit-backward-up)
|
|
;; (,(kbd "C-d") paredit-forward-down)
|
|
|
|
;; (,(kbd "M-b") backward-char)
|
|
;; (,(kbd "M-f") forward-char)
|
|
;; (,(kbd "M-p") previous-line)
|
|
;; (,(kbd "M-n") next-line)
|
|
;; (,(kbd "M-u") paredit-kill-0)
|
|
;; (,(kbd "M-d") paredit-forward-delete)
|
|
|
|
;; (,(kbd "C-M-b") backward-word)
|
|
;; (,(kbd "C-M-f") forward-word)
|
|
;; (,(kbd "C-M-u") upcase-word)
|
|
;; (,(kbd "C-M-d") paredit-forward-kill-word)
|
|
;; (,(kbd "C-M-p") nil)
|
|
;; (,(kbd "C-M-n") nil)
|
|
|
|
;; (,(kbd "M-w") paredit-copy-as-kill)
|
|
;; (,(kbd "C-h") paredit-backward-delete)
|
|
;; (,(kbd "C-w") paredit-backward-kill-word)))
|
|
|
|
;; (cp-set-keys
|
|
;; :keymap comint-mode-map
|
|
;; :bindings
|
|
;; `((,(kbd "C-d") paredit-forward-down)
|
|
;; (,(kbd "C-M-p") comint-previous-input)
|
|
;; (,(kbd "C-M-n") comint-next-input)))
|
|
|
|
(require 'mic-paren)
|
|
(paren-activate)
|
|
|
|
(require 'smartparens)
|
|
(require 'smartparens-config)
|
|
(smartparens-global-strict-mode)
|
|
(add-hook 'paredit-mode-hook 'turn-off-smartparens-mode)
|
|
(define-key smartparens-mode-map (kbd "M-<up>") 'sp-splice-sexp-killing-backward)
|
|
(sp-pair "<<" ">>")
|
|
(sp-pair "<" ">")
|
|
(sp-pair "(" nil :wrap "M-(")
|
|
(sp-pair "\"" nil :wrap "M-\"")
|
|
(sp-pair "\'" nil :wrap "M-\'")
|
|
(add-hook 'erc-mode-hook 'smartparens-strict-mode)
|
|
;; Disable inserting pair if preceded by : (e.g. in IRC smileys)
|
|
(defun cp-point-after-colon-p ()
|
|
(equal (string (char-before)) ":"))
|
|
;; (sp-pair "(" nil :unless '(cp-point-after-colon-p))
|
|
|
|
;; non-lisp modes
|
|
(cp-set-keys
|
|
:keymap smartparens-mode-map
|
|
:bindings
|
|
`((,(kbd ";") sp-comment)
|
|
(,(kbd "C-)") sp-forward-slurp-sexp)
|
|
(,(kbd "C-(") sp-backward-slurp-sexp)
|
|
(,(kbd "C-}") sp-forward-barf-sexp)
|
|
(,(kbd "C-{") sp-backward-barf-sexp)
|
|
(,(kbd "C-j") sp-newline)
|
|
(,(kbd "C-|") sp-join-sexp)
|
|
(,(kbd "M-q") sp-indent-defun)
|
|
|
|
(,(kbd "C-M-p") sp-backward-down-sexp)
|
|
(,(kbd "C-M-n") sp-backward-up-sexp)
|
|
(,(kbd "C-M-b") sp-backward-sexp)
|
|
(,(kbd "C-M-f") sp-forward-sexp)
|
|
(,(kbd "C-M-u") sp-up-sexp)
|
|
(,(kbd "C-M-d") sp-down-sexp)
|
|
(,(kbd "C-M-a") sp-beginning-of-sexp)
|
|
(,(kbd "C-M-e") sp-end-of-sexp)
|
|
|
|
(,(kbd "C-M-k") sp-kill-sexp)
|
|
(,(kbd "C-M-w") sp-copy-sexp)))
|
|
|
|
;; sp-backward-kill-word and subword-backward-kill conflict
|
|
;; How may I elegantly set many keys for emacs-lisp-mode, scheme-mode,
|
|
;; and lisp-mode ?
|
|
;; (define-key emacs-lisp-mode-map (kbd "C-p") 'sp-previous-sexp)
|
|
;; (define-key emacs-lisp-mode-map (kbd "C-n") 'sp-next-sexp)
|
|
|
|
(defun cp-setup-lisp-keys ()
|
|
(cp-set-keys
|
|
:keymap smartparens-mode-map
|
|
:bindings
|
|
`((,(kbd "C-M-b") nil)
|
|
(,(kbd "C-M-f") nil)
|
|
(,(kbd "C-M-u") nil)
|
|
(,(kbd "C-M-d") nil)
|
|
(,(kbd "C-M-p") nil)
|
|
(,(kbd "C-M-n") nil)))
|
|
|
|
(cp-local-set-many-keys
|
|
`((,(kbd "C-p") sp-backward-down-sexp)
|
|
(,(kbd "C-n") sp-backward-up-sexp)
|
|
(,(kbd "C-b") sp-backward-sexp)
|
|
(,(kbd "C-f") sp-forward-sexp)
|
|
(,(kbd "C-u") sp-up-sexp)
|
|
(,(kbd "C-d") sp-down-sexp)
|
|
(,(kbd "C-a") sp-beginning-of-sexp)
|
|
(,(kbd "C-e") sp-end-of-sexp)
|
|
|
|
(,(kbd "C-k") sp-kill-sexp)
|
|
(,(kbd "M-w") sp-copy-sexp)
|
|
(,(kbd "C-h") sp-backward-delete-char)
|
|
(,(kbd "C-w") sp-backward-kill-word)
|
|
|
|
(,(kbd "M-b") backward-char)
|
|
(,(kbd "M-f") forward-char)
|
|
(,(kbd "M-p") previous-line)
|
|
(,(kbd "M-n") next-line)
|
|
(,(kbd "M-u") cp-kill-line-0)
|
|
(,(kbd "M-d") sp-delete-char)
|
|
(,(kbd "M-a") beginning-of-line)
|
|
(,(kbd "M-e") end-of-line)
|
|
|
|
(,(kbd "C-M-b") backward-word)
|
|
(,(kbd "C-M-f") forward-word)
|
|
(,(kbd "C-M-u") upcase-word)
|
|
(,(kbd "C-M-d") sp-kill-word)))
|
|
|
|
(cp-set-keys
|
|
:keymap comint-mode-map
|
|
:bindings
|
|
`((,(kbd "C-d") sp-down-sexp)
|
|
(,(kbd "C-M-p") comint-previous-input)
|
|
(,(kbd "C-M-n") comint-next-input))))
|
|
|
|
(add-hook 'emacs-lisp-mode-hook 'cp-setup-lisp-keys)
|
|
(add-hook 'ielm-mode-hook 'cp-setup-lisp-keys)
|
|
|
|
;; ielm
|
|
(require 'ielm)
|
|
;; (define-key ielm-map (kbd "C-p") 'sp-backward-down-sexp)
|
|
;; (define-key ielm-map (kbd "C-n") 'sp-backward-up-sexp)
|
|
;; (define-key ielm-map (kbd "C-b") 'sp-backward-sexp)
|
|
;; (define-key ielm-map (kbd "C-f") 'sp-forward-sexp)
|
|
;; (define-key ielm-map (kbd "C-u") 'sp-up-sexp)
|
|
;; (define-key ielm-map (kbd "C-d") 'sp-down-sexp)
|
|
;; (define-key comint-mode-map (kbd "C-d") 'sp-down-sexp)
|
|
;; (define-key ielm-map (kbd "C-a") 'sp-beginning-of-sexp)
|
|
;; (define-key ielm-map (kbd "C-e") 'sp-end-of-sexp)
|
|
|
|
;; (define-key ielm-map (kbd "C-k") 'sp-kill-sexp)
|
|
;; (define-key ielm-map (kbd "M-w") 'sp-copy-sexp)
|
|
;; (define-key ielm-map (kbd "C-h") 'sp-backward-delete-char)
|
|
;; (define-key ielm-map (kbd "C-w") 'sp-backward-kill-word)
|
|
|
|
;; (define-key ielm-map (kbd "M-b") 'backward-char)
|
|
;; (define-key ielm-map (kbd "M-f") 'forward-char)
|
|
;; (define-key ielm-map (kbd "M-p") 'previous-line)
|
|
;; (define-key ielm-map (kbd "M-n") 'next-line)
|
|
;; (define-key ielm-map (kbd "M-u") 'cp-kill-line-0)
|
|
;; (define-key ielm-map (kbd "C-k") 'sp-kill-sexp)
|
|
;; (define-key ielm-map (kbd "M-d") 'sp-delete-char)
|
|
|
|
;; (define-key ielm-map (kbd "C-M-b") 'backward-word)
|
|
;; (define-key ielm-map (kbd "C-M-f") 'forward-word)
|
|
;; (define-key ielm-map (kbd "C-M-u") 'upcase-word)
|
|
;; (define-key ielm-map (kbd "C-M-d") 'sp-kill-word)
|
|
;; (define-key ielm-map (kbd "C-M-p") nil)
|
|
;; (define-key ielm-map (kbd "C-M-n") nil)
|
|
|
|
;; (define-key comint-mode-map (kbd "C-M-p") 'comint-previous-input)
|
|
;; (define-key comint-mode-map (kbd "C-M-n") 'comint-next-input)
|
|
|
|
|
|
;; (define-key scheme-mode-map (kbd "C-p") 'sp-backward-down-sexp)
|
|
;; (define-key scheme-mode-map (kbd "C-n") 'paredit-forward-up)
|
|
;; (define-key scheme-mode-map (kbd "C-b") 'paredit-backward)
|
|
;; (define-key scheme-mode-map (kbd "C-f") 'sp-forward-sexp)
|
|
;; (define-key scheme-mode-map (kbd "C-u") 'paredit-backward-up)
|
|
;; (define-key scheme-mode-map (kbd "C-d") 'paredit-forward-down)
|
|
;; (define-key comint-mode-map (kbd "C-d") 'paredit-forward-down)
|
|
|
|
;; (define-key scheme-mode-map (kbd "M-b") 'backward-char)
|
|
;; (define-key scheme-mode-map (kbd "M-f") 'forward-char)
|
|
;; (define-key scheme-mode-map (kbd "M-p") 'previous-line)
|
|
;; (define-key scheme-mode-map (kbd "M-n") 'next-line)
|
|
;; ;; (define-key scheme-mode-map (kbd "M-u") 'paredit-kill-0)
|
|
;; (define-key scheme-mode-map (kbd "C-k") 'sp-kill-sexp)
|
|
;; (define-key scheme-mode-map (kbd "M-d") 'sp-delete-char)
|
|
|
|
;; (define-key scheme-mode-map (kbd "C-M-b") 'backward-word)
|
|
;; (define-key scheme-mode-map (kbd "C-M-f") 'forward-word)
|
|
;; (define-key scheme-mode-map (kbd "C-M-u") 'upcase-word)
|
|
;; (define-key scheme-mode-map (kbd "C-M-d") 'sp-kill-word)
|
|
;; (define-key scheme-mode-map (kbd "C-M-p") nil)
|
|
;; (define-key scheme-mode-map (kbd "C-M-n") nil)
|
|
;; (define-key comint-mode-map (kbd "C-M-p") 'comint-previous-input)
|
|
;; (define-key comint-mode-map (kbd "C-M-n") 'comint-next-input)
|
|
|
|
;; (define-key scheme-mode-map (kbd "M-w") 'paredit-copy-as-kill)
|
|
;; (define-key scheme-mode-map (kbd "C-h") 'paredit-backward-delete)
|
|
;; (define-key scheme-mode-map (kbd "C-w") 'paredit-backward-kill-word)
|