;; -*- coding: utf-8; lexical-binding: t; -*- (require 'lazy-load) ;;; symbol-overlay-map ;; "i" -> symbol-overlay-put ;; "n" -> symbol-overlay-jump-next ;; "p" -> symbol-overlay-jump-prev ;; "w" -> symbol-overlay-save-symbol ;; "t" -> symbol-overlay-toggle-in-scope ;; "e" -> symbol-overlay-echo-mark ;; "d" -> symbol-overlay-jump-to-definition ;; "s" -> symbol-overlay-isearch-literally ;; "q" -> symbol-overlay-query-replace ;; "r" -> symbol-overlay-rename (lazy-load-global-keys '(("s-i" . symbol-overlay-put) ("M-p" . symbol-overlay-jump-prev) ("M-n" . symbol-overlay-jump-next)) "symbol-overlay") (setq backward-delete-char-untabify-method 'hungry) (with-eval-after-load 'awesome-pair ;; (define-key awesome-pair-mode-map (kbd "(") 'awesome-pair-open-round) ;; (define-key awesome-pair-mode-map (kbd "[") 'awesome-pair-open-bracket) ;; (define-key awesome-pair-mode-map (kbd "{") 'awesome-pair-open-curly) (define-key awesome-pair-mode-map (kbd ")") 'awesome-pair-close-round) (define-key awesome-pair-mode-map (kbd "]") 'awesome-pair-close-bracket) (define-key awesome-pair-mode-map (kbd "}") 'awesome-pair-close-curly) ;; (define-key awesome-pair-mode-map (kbd "=") 'awesome-pair-equal) (define-key awesome-pair-mode-map (kbd "%") 'awesome-pair-match-paren) ;; (define-key awesome-pair-mode-map (kbd "\"") 'awesome-pair-double-quote) (define-key awesome-pair-mode-map (kbd "SPC") 'awesome-pair-space) (define-key awesome-pair-mode-map (kbd "M-o") 'awesome-pair-backward-delete) (define-key awesome-pair-mode-map (kbd "C-d") 'awesome-pair-forward-delete) (define-key awesome-pair-mode-map (kbd "C-k") 'creature/awesome-pair-kill) (define-key awesome-pair-mode-map (kbd "M-\"") 'awesome-pair-wrap-double-quote) (define-key awesome-pair-mode-map (kbd "M-[") 'awesome-pair-wrap-bracket) (define-key awesome-pair-mode-map (kbd "M-{") 'awesome-pair-wrap-curly) (define-key awesome-pair-mode-map (kbd "M-(") 'awesome-pair-wrap-round) (define-key awesome-pair-mode-map (kbd "M-)") 'awesome-pair-unwrap) (define-key awesome-pair-mode-map (kbd "M-N") 'awesome-pair-jump-right) (define-key awesome-pair-mode-map (kbd "M-P") 'awesome-pair-jump-left) (define-key awesome-pair-mode-map (kbd "M-RET") 'awesome-pair-jump-out-pair-and-newline)) (defun creature/awesome-pair-in-template-string-p () (and (awesome-pair-in-string-p) (consp (awesome-pair-string-start+end-points)) (let* ((pos_cons (awesome-pair-string-start+end-points)) (start (car pos_cons)) (end (cdr pos_cons))) (and (char-equal ?` (char-after start)) (char-equal ?` (char-after end)))))) (defun creature/awesome-pair-kill-template-string-curly-content () (interactive) (save-excursion (kill-region (point) (progn (search-forward "}") (1- (point)))))) (defun creature/awesome-pair-kill () (interactive) (cond ((and (derived-mode-p 'js-mode 'typescript-mode 'web-mode) (creature/awesome-pair-in-template-string-p) (awesome-pair-in-curly-p)) (creature/awesome-pair-kill-template-string-curly-content)) (t (funcall-interactively #'awesome-pair-kill)))) (defun creature/awesome-pair-setup () (require 'awesome-pair) (add-hook 'prog-mode-hook #'awesome-pair-mode) (add-hook 'conf-unix-mode-hook #'awesome-pair-mode) (add-hook 'conf-windows-mode-hook #'awesome-pair-mode) (add-hook 'yaml-mode-hook #'awesome-pair-mode) nil) (creature/awesome-pair-setup) (provide 'init-edit)