update packages
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
;; -*- no-byte-compile: t; lexical-binding: nil -*-
|
||||
(define-package "nerd-icons-dired" "20250506.1729"
|
||||
(define-package "nerd-icons-dired" "20251106.1840"
|
||||
"Shows icons for each file in dired mode."
|
||||
'((emacs "24.4")
|
||||
(nerd-icons "0.0.1"))
|
||||
:url "https://github.com/rainstormstudio/nerd-icons-dired"
|
||||
:commit "69b5d3176b7bb08ac1f477cf7c5a491b9b0b5b54"
|
||||
:revdesc "69b5d3176b7b"
|
||||
:commit "3265d6c4b552eae457d50d423adb10494113d70b"
|
||||
:revdesc "3265d6c4b552"
|
||||
:keywords '("lisp")
|
||||
:authors '(("Hongyu Ding" . "rainstormstudio@yahoo.com"))
|
||||
:maintainers '(("Hongyu Ding" . "rainstormstudio@yahoo.com")))
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
|
||||
;; Author: Hongyu Ding <rainstormstudio@yahoo.com>
|
||||
;; Keywords: lisp
|
||||
;; Package-Version: 20250506.1729
|
||||
;; Package-Revision: 69b5d3176b7b
|
||||
;; Package-Version: 20251106.1840
|
||||
;; Package-Revision: 3265d6c4b552
|
||||
;; Package-Requires: ((emacs "24.4") (nerd-icons "0.0.1"))
|
||||
;; URL: https://github.com/rainstormstudio/nerd-icons-dired
|
||||
;; Keywords: files, icons, dired
|
||||
@@ -42,15 +42,25 @@
|
||||
(require 'dired)
|
||||
(require 'nerd-icons)
|
||||
|
||||
(defface nerd-icons-dired-dir-face
|
||||
'((t nil))
|
||||
"Face for the directory icon."
|
||||
:group 'nerd-icons-faces)
|
||||
|
||||
(defcustom nerd-icons-dired-v-adjust 0.01
|
||||
"The default vertical adjustment of the icon in the Dired buffer."
|
||||
(defcustom nerd-icons-dired-infix-string "\t"
|
||||
"String inserted between the icon and the file name in the Dired buffer."
|
||||
:group 'nerd-icons
|
||||
:type 'number)
|
||||
:type 'string)
|
||||
|
||||
(defcustom nerd-icons-dired-special-prefix-string " \t"
|
||||
"String inserted before file name of special entries in the Dired buffer."
|
||||
:group 'nerd-icons
|
||||
:type 'string)
|
||||
|
||||
(defcustom nerd-icons-dired-file-icon-function #'nerd-icons-icon-for-file
|
||||
"Function that get icon for file."
|
||||
:group 'nerd-icons
|
||||
:type 'function)
|
||||
|
||||
(defcustom nerd-icons-dired-dir-icon-function #'nerd-icons-icon-for-dir
|
||||
"Function that get icon for dir."
|
||||
:group 'nerd-icons
|
||||
:type 'function)
|
||||
|
||||
(defvar nerd-icons-dired-mode)
|
||||
|
||||
@@ -58,33 +68,21 @@
|
||||
"Add overlay to display STRING at POS."
|
||||
(let ((ov (make-overlay (1- pos) pos)))
|
||||
(overlay-put ov 'nerd-icons-dired-overlay t)
|
||||
(overlay-put ov 'evaporate t)
|
||||
(overlay-put ov 'after-string
|
||||
;; Workaround for the issue where overlapping faces
|
||||
;; are not applied
|
||||
;; https://github.com/rainstormstudio/nerd-icons-dired/issues/1
|
||||
(propertize string 'display string))))
|
||||
|
||||
(defun nerd-icons-dired--overlays-in (beg end)
|
||||
"Get all nerd-icons-dired overlays between BEG to END."
|
||||
(cl-remove-if-not
|
||||
(lambda (ov)
|
||||
(overlay-get ov 'nerd-icons-dired-overlay))
|
||||
(overlays-in beg end)))
|
||||
|
||||
(defun nerd-icons-dired--overlays-at (pos)
|
||||
"Get nerd-icons-dired overlays at POS."
|
||||
(apply #'nerd-icons-dired--overlays-in `(,pos ,pos)))
|
||||
|
||||
(defun nerd-icons-dired--remove-all-overlays ()
|
||||
"Remove all `nerd-icons-dired' overlays."
|
||||
(save-restriction
|
||||
(widen)
|
||||
(mapc #'delete-overlay
|
||||
(nerd-icons-dired--overlays-in (point-min) (point-max)))))
|
||||
(remove-overlays nil nil 'nerd-icons-dired-overlay t)))
|
||||
|
||||
(defun nerd-icons-dired--refresh ()
|
||||
"Display the icons of files in a Dired buffer."
|
||||
(nerd-icons-dired--remove-all-overlays)
|
||||
(defun nerd-icons-dired--annotate ()
|
||||
"Add icons to all files in the visible region of the buffer."
|
||||
(save-excursion
|
||||
(goto-char (point-min))
|
||||
(while (not (eobp))
|
||||
@@ -92,56 +90,33 @@
|
||||
(let ((file (dired-get-filename 'relative 'noerror)))
|
||||
(when file
|
||||
(let ((icon (if (file-directory-p file)
|
||||
(nerd-icons-icon-for-dir file
|
||||
:face 'nerd-icons-dired-dir-face
|
||||
:v-adjust nerd-icons-dired-v-adjust)
|
||||
(nerd-icons-icon-for-file file :v-adjust nerd-icons-dired-v-adjust)))
|
||||
(funcall nerd-icons-dired-dir-icon-function file)
|
||||
(funcall nerd-icons-dired-file-icon-function file)))
|
||||
(inhibit-read-only t))
|
||||
(if (member file '("." ".."))
|
||||
(nerd-icons-dired--add-overlay (dired-move-to-filename) " \t")
|
||||
(nerd-icons-dired--add-overlay (dired-move-to-filename) (concat icon "\t")))))))
|
||||
(nerd-icons-dired--add-overlay (dired-move-to-filename)
|
||||
nerd-icons-dired-special-prefix-string)
|
||||
(nerd-icons-dired--add-overlay (dired-move-to-filename)
|
||||
(concat icon nerd-icons-dired-infix-string)))))))
|
||||
(forward-line 1))))
|
||||
|
||||
(defun nerd-icons-dired--refresh-advice (fn &rest args)
|
||||
"Advice function for FN with ARGS."
|
||||
(let ((result (apply fn args))) ;; Save the result of the advised function
|
||||
(when nerd-icons-dired-mode
|
||||
(nerd-icons-dired--refresh))
|
||||
result)) ;; Return the result
|
||||
(defun nerd-icons-dired--refresh ()
|
||||
"Update the display of icons of files in a Dired buffer."
|
||||
(when nerd-icons-dired-mode
|
||||
(nerd-icons-dired--remove-all-overlays)
|
||||
(save-restriction
|
||||
(widen)
|
||||
(nerd-icons-dired--annotate))))
|
||||
|
||||
(defun nerd-icons-dired--setup ()
|
||||
"Setup `nerd-icons-dired'."
|
||||
(when (derived-mode-p 'dired-mode)
|
||||
(setq-local tab-width 1)
|
||||
(advice-add 'dired-readin :around #'nerd-icons-dired--refresh-advice)
|
||||
(advice-add 'dired-revert :around #'nerd-icons-dired--refresh-advice)
|
||||
(advice-add 'dired-internal-do-deletions :around #'nerd-icons-dired--refresh-advice)
|
||||
(advice-add 'dired-insert-subdir :around #'nerd-icons-dired--refresh-advice)
|
||||
(advice-add 'dired-create-directory :around #'nerd-icons-dired--refresh-advice)
|
||||
(advice-add 'dired-do-redisplay :around #'nerd-icons-dired--refresh-advice)
|
||||
(advice-add 'dired-kill-subdir :around #'nerd-icons-dired--refresh-advice)
|
||||
(advice-add 'dired-do-kill-lines :around #'nerd-icons-dired--refresh-advice)
|
||||
(with-eval-after-load 'dired-narrow
|
||||
(advice-add 'dired-narrow--internal :around #'nerd-icons-dired--refresh-advice))
|
||||
(with-eval-after-load 'dired-subtree
|
||||
(advice-add 'dired-subtree-toggle :around #'nerd-icons-dired--refresh-advice))
|
||||
(with-eval-after-load 'wdired
|
||||
(advice-add 'wdired-abort-changes :around #'nerd-icons-dired--refresh-advice))
|
||||
(nerd-icons-dired--refresh)))
|
||||
(setq-local tab-width 1)
|
||||
(nerd-icons-dired--refresh)
|
||||
(add-hook 'dired-after-readin-hook 'nerd-icons-dired--annotate))
|
||||
|
||||
(defun nerd-icons-dired--teardown ()
|
||||
"Functions used as advice when redisplaying buffer."
|
||||
(advice-remove 'dired-readin #'nerd-icons-dired--refresh-advice)
|
||||
(advice-remove 'dired-revert #'nerd-icons-dired--refresh-advice)
|
||||
(advice-remove 'dired-internal-do-deletions #'nerd-icons-dired--refresh-advice)
|
||||
(advice-remove 'dired-narrow--internal #'nerd-icons-dired--refresh-advice)
|
||||
(advice-remove 'dired-subtree-toggle #'nerd-icons-dired--refresh-advice)
|
||||
(advice-remove 'dired-insert-subdir #'nerd-icons-dired--refresh-advice)
|
||||
(advice-remove 'dired-do-kill-lines #'nerd-icons-dired--refresh-advice)
|
||||
(advice-remove 'dired-create-directory #'nerd-icons-dired--refresh-advice)
|
||||
(advice-remove 'dired-do-redisplay #'nerd-icons-dired--refresh-advice)
|
||||
(advice-remove 'dired-kill-subdir #'nerd-icons-dired--refresh-advice)
|
||||
(advice-remove 'wdired-abort-changes #'nerd-icons-dired--refresh-advice)
|
||||
(remove-hook 'dired-after-readin-hook 'nerd-icons-dired--annotate)
|
||||
(nerd-icons-dired--remove-all-overlays))
|
||||
|
||||
;;;###autoload
|
||||
@@ -153,5 +128,14 @@
|
||||
(nerd-icons-dired--setup)
|
||||
(nerd-icons-dired--teardown))))
|
||||
|
||||
;; We advise wdired because it restores the buffer text from a copy on abort,
|
||||
;; and the copy doesn't preserve overlays.
|
||||
|
||||
(advice-add 'wdired-abort-changes :after #'nerd-icons-dired--refresh)
|
||||
|
||||
(defun nerd-icons-dired-unload-function ()
|
||||
"Unload function for `nerd-icons-dired'."
|
||||
(advice-remove 'wdired-abort-changes #'nerd-icons-dired--refresh))
|
||||
|
||||
(provide 'nerd-icons-dired)
|
||||
;;; nerd-icons-dired.el ends here
|
||||
|
||||
Reference in New Issue
Block a user