aboutsummaryrefslogtreecommitdiff
path: root/emacs/.emacs.d/lisp
diff options
context:
space:
mode:
Diffstat (limited to 'emacs/.emacs.d/lisp')
-rw-r--r--emacs/.emacs.d/lisp/my/belf.el27
-rw-r--r--emacs/.emacs.d/lisp/my/infobox.el4
2 files changed, 25 insertions, 6 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)
diff --git a/emacs/.emacs.d/lisp/my/infobox.el b/emacs/.emacs.d/lisp/my/infobox.el
index 5698042..9c5c7b1 100644
--- a/emacs/.emacs.d/lisp/my/infobox.el
+++ b/emacs/.emacs.d/lisp/my/infobox.el
@@ -113,8 +113,8 @@ something like
(end-of-line)
(insert " -- " (buttonize
"xdg-open"
- (lambda (_)
- (call-process "xdg-open" nil 0 nil filename))))
+ (lambda (_) (call-process "xdg-open" nil 0 nil filename)))
+ " " (buttonize "find-file" (lambda (_) (find-file filename))))
(buffer-string))
`(infobox-exiftool ,filename)
(called-interactively-p 'interactive)