2023-12-23 16:24:30 +08:00

50 lines
1.8 KiB
EmacsLisp

;; -*- coding: utf-8; -*-
;;; Require:
;;; Code:
(defun lazy-load-global-keys (key-alist filename &optional key-prefix)
(lazy-load-set-keys key-alist nil key-prefix)
(dolist (element key-alist)
(setq fun (cdr element))
(autoload fun filename nil t)))
(defun lazy-load-local-keys (key-alist keymap filename &optional key-prefix)
(lazy-load-set-keys key-alist keymap key-prefix)
(dolist (element key-alist)
(setq fun (cdr element))
(autoload fun filename nil t)))
(defun lazy-load-set-keys (key-alist &optional keymap key-prefix)
"This function is to little type when define key binding.
`KEYMAP' is a add keymap for some binding, default is `current-global-map'.
`KEY-ALIST' is a alist contain main-key and command.
`KEY-PREFIX' is a add prefix for some binding, default is nil."
(let (key def)
(or keymap (setq keymap (current-global-map)))
(if key-prefix
(setq key-prefix (concat key-prefix " "))
(setq key-prefix ""))
(dolist (element key-alist)
(setq key (car element))
(setq def (cdr element))
(cond ((stringp key) (setq key (read-kbd-macro (concat key-prefix key))))
((vectorp key) nil)
(t (signal 'wrong-type-argument (list 'array key))))
(define-key keymap key def))))
(defun lazy-load-unset-keys (key-list &optional keymap)
"This function is to little type when unset key binding.
`KEYMAP' is add keymap for some binding, default is `current-global-map'
`KEY-LIST' is list contain key."
(let (key)
(or keymap (setq keymap (current-global-map)))
(dolist (key key-list)
(cond ((stringp key) (setq key (read-kbd-macro (concat key))))
((vectorp key) nil)
(t (signal 'wrong-type-argument (list 'array key))))
(define-key keymap key nil))))
(provide 'lazy-load)
;;; lazy-load.el ends here