After some profiling, it turns out map-put and map-delete are 5-7x slower (more on Emacs 25) than delq, setf/alist-get and add-to-list for small lists (under 250 items), which is exactly how I've been using them. The only caveat is alist-get's signature is different on Emacs 25, thus a polyfill is necessary in core-lib.
17 lines
675 B
EmacsLisp
17 lines
675 B
EmacsLisp
;;; emacs/eshell/autoload/settings.el -*- lexical-binding: t; -*-
|
|
|
|
;;;###autodef
|
|
(defun set-eshell-alias! (&rest aliases)
|
|
"Define aliases for eshell."
|
|
(or (cl-evenp (length aliases))
|
|
(signal 'wrong-number-of-arguments (list 'even (length aliases))))
|
|
(after! eshell
|
|
(while aliases
|
|
(setf (alist-get (pop aliases) +eshell-aliases nil nil #'equal)
|
|
(pop aliases)))
|
|
(when (boundp 'eshell-command-aliases-list)
|
|
(if +eshell--default-aliases
|
|
(setq eshell-command-aliases-list
|
|
(append +eshell--default-aliases
|
|
+eshell-aliases))
|
|
(setq eshell-command-aliases-list +eshell-aliases)))))
|