diff options
author | Yuchen Pei <id@ypei.org> | 2025-02-02 13:36:38 +1100 |
---|---|---|
committer | Yuchen Pei <id@ypei.org> | 2025-02-02 13:36:38 +1100 |
commit | 618fe180a68331ddf58b2a9679f2f6a088d9fecd (patch) | |
tree | 9aac89fbc6cf885d8861c7620e0e833d95395948 /emacs/.emacs.d/lisp/my/belf.el | |
parent | 270b5cd8249bb68cb497e3b41e3ba8409c1aa718 (diff) |
Diffstat (limited to 'emacs/.emacs.d/lisp/my/belf.el')
-rw-r--r-- | emacs/.emacs.d/lisp/my/belf.el | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/emacs/.emacs.d/lisp/my/belf.el b/emacs/.emacs.d/lisp/my/belf.el index a8b6401..d9392c9 100644 --- a/emacs/.emacs.d/lisp/my/belf.el +++ b/emacs/.emacs.d/lisp/my/belf.el @@ -27,6 +27,13 @@ ;;; Code: (require 'tabulated-list) +(require 'infobox) + +(defvar-keymap belf-mode-map + :parent tabulated-list-mode-map + "i" #'belf-book-infobox + "RET" #'belf-open-book + "o" #'belf-open-book-other-window) (define-derived-mode belf-mode tabulated-list-mode "Bookshelf" "Major mode for browsing a list of books." @@ -56,12 +63,12 @@ (defun belf-parse-all-file-names () (seq-filter #'identity - (seq-map-indexed - (lambda (f i) + (seq-map + (lambda (f) (when-let ((parsed (belf-parse-file-name f))) (let-alist parsed - (list i (vector .authors .title .year))))) - (directory-files belf-dir)))) + (list f (vector .authors .title .year))))) + (directory-files belf-dir t)))) (defun belf-parse-file-name (file-name) (let ((base (file-name-base file-name))) @@ -70,4 +77,16 @@ (title . ,(match-string 2 base)) (year . ,(match-string 3 base)))))) +(defun belf-book-infobox () + (interactive) + (infobox-exiftool (tabulated-list-get-id))) + +(defun belf-open-book () + (interactive) + (find-file (tabulated-list-get-id))) + +(defun belf-open-book-other-window () + (interactive) + (find-file-other-window (tabulated-list-get-id))) + (provide 'belf) |