branch: elpa/magit commit ae5f8b0b03773d00f2fd8034af106428b31cb8a4 Author: Jonas Bernoulli <jo...@bernoul.li> Commit: Jonas Bernoulli <jo...@bernoul.li>
magit-format-file-{all-the,nerd}-icons: Speed up module predicate --- lisp/magit-diff.el | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/lisp/magit-diff.el b/lisp/magit-diff.el index 280de4a51f1..f539180878b 100644 --- a/lisp/magit-diff.el +++ b/lisp/magit-diff.el @@ -2508,25 +2508,33 @@ keymap is the parent of their keymaps." (cl-flet ((icon (if (or (eq kind 'module) (string-suffix-p "/" file)) 'all-the-icons-icon-for-dir 'all-the-icons-icon-for-file))) - (propertize (concat (and status (format "%-11s" status)) - (if orig - (format "%s %s -> %s %s" - (icon orig) orig - (icon file) file) - (format "%s %s" (icon file) file))) - 'font-lock-face face))) + (cl-letf (((symbol-function 'all-the-icons-icons-dir-is-submodule) + (if (eq kind 'module) + (lambda (_) t) + (symbol-function 'all-the-icons-icons-dir-is-submodule)))) + (propertize (concat (and status (format "%-11s" status)) + (if orig + (format "%s %s -> %s %s" + (icon orig) orig + (icon file) file) + (format "%s %s" (icon file) file))) + 'font-lock-face face)))) (defun magit-format-file-nerd-icons (kind file face &optional status orig) (cl-flet ((icon (if (or (eq kind 'module) (string-suffix-p "/" file)) 'nerd-icons-icon-for-dir 'nerd-icons-icon-for-file))) - (propertize (concat (and status (format "%-11s" status)) - (if orig - (format "%s %s -> %s %s" - (icon orig) orig - (icon file) file) - (format "%s %s" (icon file) file))) - 'font-lock-face face))) + (cl-letf (((symbol-function 'nerd-icons-dir-is-submodule) + (if (eq kind 'module) + (lambda (_) t) + (symbol-function 'nerd-icons-icons-dir-is-submodule)))) + (propertize (concat (and status (format "%-11s" status)) + (if orig + (format "%s %s -> %s %s" + (icon orig) orig + (icon file) file) + (format "%s %s" (icon file) file))) + 'font-lock-face face)))) (defun magit-diff-wash-submodule () ;; See `show_submodule_summary' in submodule.c and "this" commit.