General refactor (use map.el more)

+ map-delete is shorter and faster than assq-delete-all
+ map-put is simpler than the delete-then-set workflow
+ map-merge is great for merging default and user settings
This commit is contained in:
Henrik Lissner 2018-01-06 23:54:12 -05:00
parent 2eeb6ce0d9
commit 392f04446f
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395
7 changed files with 27 additions and 42 deletions

View file

@ -205,7 +205,7 @@ Used by `doom//packages-install'."
(when (and (not (package-installed-p name))
(quelpa-setup-p)
(assq name quelpa-cache))
(setq quelpa-cache (assq-delete-all name quelpa-cache))
(map-delete quelpa-cache name)
(quelpa-save-cache)
(let ((path (expand-file-name (symbol-name name) quelpa-build-dir)))
(when (file-exists-p path)
@ -304,7 +304,7 @@ package.el as appropriate."
(unless (quelpa-setup-p)
(error "Could not initialize QUELPA"))
(when (assq name quelpa-cache)
(setq quelpa-cache (assq-delete-all name quelpa-cache))
(map-delete quelpa-cache name)
(quelpa-save-cache)
(setq quelpa-p t))
(package-delete (cadr (assq name package-alist)) force-p)

View file

@ -146,8 +146,7 @@ extension, try to guess one."
;; editorconfig to ignore indentation. I prefer dynamic indentation support
;; built into Emacs.
(dolist (mode '(emacs-lisp-mode lisp-mode))
(setq editorconfig-indentation-alist
(assq-delete-all mode editorconfig-indentation-alist)))
(map-delete editorconfig-indentation-alist mode))
(defvar whitespace-style)
(defun doom|editorconfig-whitespace-mode-maybe (&rest _)

View file

@ -463,12 +463,8 @@ Accepts the following properties:
(when-let* ((val (plist-get plist prop)))
(plist-put plist prop (eval val))))
`(progn
(when ,(and pkg-pin t)
(cl-pushnew (cons ',name ,pkg-pin) package-pinned-packages
:test #'eq :key #'car))
(when ,(and old-plist t)
(assq-delete-all ',name doom-packages))
(push ',(cons name plist) doom-packages))))
,(if (and pkg-pin t) `(map-put package-pinned-packages ',name ,pkg-pin))
(map-put doom-packages ',name ',plist))))
(defmacro depends-on! (module submodule)
"Declares that this module depends on another.

View file

@ -119,25 +119,20 @@ default/fallback account."
;; However, the real magic happens in `+email|gmail-fix-flags'.
;;
;; Gmail will handle the rest.
(setq mu4e-marks (assq-delete-all 'delete mu4e-marks))
(setq mu4e-marks (assq-delete-all 'trash mu4e-marks))
(push '(trash :char ("d" . "")
(defun +email--mark-seen (docid msg target)
(mu4e~proc-move docid (mu4e~mark-check-target target) "+S-u-N"))
(map-delete mu4e-marks 'delete)
(map-put mu4e-marks 'trash
(list :char '("d" . "")
:prompt "dtrash"
:dyn-target (lambda (target msg) (mu4e-get-trash-folder msg))
:action
(lambda (docid msg target)
(mu4e~proc-move docid (mu4e~mark-check-target target) "+S-u-N")))
mu4e-marks)
:action #'+email--mark-seen))
;; Refile will be my "archive" function.
(setq mu4e-marks (assq-delete-all 'refile mu4e-marks))
(push '(refile :char ("r" . "")
:prompt "refile"
(map-put mu4e-marks 'refile
(list :char '("r" . "") :prompt "refile"
:show-target (lambda (target) "archive")
:action
(lambda (docid msg target)
(mu4e~proc-move docid (mu4e~mark-check-target target) "+S-u-N")))
mu4e-marks)
:action #'+email--mark-seen))
;; This hook correctly modifies gmail flags on emails when they are marked.
;; Without it, refiling (archiving), trashing, and flagging (starring) email

View file

@ -14,8 +14,7 @@
"Search on: "
(mapcar #'car +lookup-provider-url-alist)
nil t)))
(push (cons key provider)
(assq-delete-all key +lookup--last-provider))))))
(map-put +lookup--last-provider key provider)))))
(defun +lookup--symbol-or-region (&optional initial)
(cond (initial)
@ -227,8 +226,7 @@ for the provider."
(user-error "The search query is empty"))
(funcall +lookup-open-url-fn (format url (url-encode-url search))))
('error
(setq +lookup--last-provider
(assq-delete-all major-mode +lookup--last-provider)))))
(map-delete +lookup--last-provider major-mode))))
;;;###autoload
(defun +lookup/online-select ()

View file

@ -76,13 +76,11 @@ and enables `+popup-buffer-mode'."
"Merge `+popup-default-alist' and `+popup-default-parameters' with ALIST."
(if (not alist)
(setq alist +popup-default-alist)
(require 'map)
(let* ((alist (map-merge 'list +popup-default-alist alist))
(params (map-merge 'list
+popup-default-parameters
(cdr (assq 'window-parameters alist)))))
(setq alist (assq-delete-all 'window-parameters alist))
(push (cons 'window-parameters params) alist)
(map-put alist 'window-parameters params)
(nreverse alist))))
@ -151,7 +149,7 @@ current buffer."
(remove-hook 'doom-escape-hook #'+popup|close-on-escape)
(setq display-buffer-alist +popup--old-display-buffer-alist)
(dolist (prop +popup-window-parameters)
(assq-delete-all prop window-persistent-parameters)))))
(map-delete prop window-persistent-parameters)))))
;;;###autoload
(define-minor-mode +popup-buffer-mode

View file

@ -100,14 +100,13 @@ ALIST supports one custom parameter: `size', which will resolve to
`(let ((alist ,alist)
(parameters ,parameters))
,(when alist
'(when-let* ((size (cdr (assq 'size alist))))
(setq alist (assq-delete-all 'size alist))
(push (cons (pcase (cdr (or (assq 'side alist)
(assq 'side +popup-default-alist)))
((or `left `right) 'window-width)
(_ 'window-height))
size)
alist)))
`(when-let* ((size (cdr (assq 'size alist)))
(side (cdr (assq 'side (append alist +popup-default-alist)))))
(map-delete alist 'size)
(map-put alist (if (memq side '(left right))
'window-width
'window-height)
size)))
(prog1 (push (append (list ,condition '(+popup-buffer))
alist
(list (cons 'window-parameters parameters)))