diff --git a/.gitignore b/.gitignore index 2bd42d9..301e07d 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ /ido.last /history /recentf +/.cache/ diff --git a/.gitmodules b/.gitmodules index 5f6cb2b..27a87aa 100644 --- a/.gitmodules +++ b/.gitmodules @@ -52,3 +52,6 @@ [submodule "site-lisp/corfu-doc"] path = site-lisp/corfu-doc url = https://github.com/galeo/corfu-doc.git +[submodule "site-lisp/awesome-pair"] + path = site-lisp/awesome-pair + url = https://github.com/manateelazycat/awesome-pair.git diff --git a/init.el b/init.el index 9152af5..7a91610 100644 --- a/init.el +++ b/init.el @@ -124,3 +124,7 @@ If freezing sometimes, decrease it. If stuttering, increase it.") (add-hook 'emacs-startup-hook (lambda () (message (emacs-init-time)))) + +(with-eval-after-load 'package + (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))) + diff --git a/lisp/init-edit.el b/lisp/init-edit.el index d817b21..954b018 100644 --- a/lisp/init-edit.el +++ b/lisp/init-edit.el @@ -23,4 +23,65 @@ (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) diff --git a/lisp/init-git.el b/lisp/init-git.el index e3da5de..7759de8 100644 --- a/lisp/init-git.el +++ b/lisp/init-git.el @@ -1,6 +1,7 @@ ;; -*- coding: utf-8; lexical-binding: t; -*- (require 'lazy-load) + (lazy-load-global-keys '(("C-x g" . magit-status)) "magit") diff --git a/site-lisp/awesome-pair b/site-lisp/awesome-pair new file mode 160000 index 0000000..520fdbc --- /dev/null +++ b/site-lisp/awesome-pair @@ -0,0 +1 @@ +Subproject commit 520fdbcb8708e4505c7d2b18f58ee573f1d81156