refactor(wpcarro/emacs): Simplify bookmark.el

- narrow lib's scope and update documentation
- remove unnecessary dependencies

Change-Id: I5931a5a6e571466b3334dc02e88c9c283754d263
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5282
Tested-by: BuildkiteCI
Reviewed-by: wpcarro <wpcarro@gmail.com>
Autosubmit: wpcarro <wpcarro@gmail.com>
This commit is contained in:
William Carroll 2022-02-14 11:56:47 -08:00 committed by clbot
parent a9effe690c
commit a8e76b24e8
2 changed files with 10 additions and 48 deletions

View file

@ -5,13 +5,7 @@
;; Package-Requires: ((emacs "24.3"))
;;; Commentary:
;; After enjoying and relying on Emacs's builtin `jump-to-register' command, I'd
;; like to recreate this functionality with a few extensions.
;;
;; Everything herein will mimmick my previous KBDs for `jump-to-register', which
;; were <leader>-j-<register-kbd>. If the `bookmark-path' is a file, Emacs will
;; open a buffer with that file. If the `bookmark-path' is a directory, Emacs
;; will open an ivy window searching that directory.
;; A more opinionated version of Emacs's builtin `jump-to-register'.
;;; Code:
@ -19,52 +13,23 @@
;; Dependencies
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(require 'f)
(require 'buffer)
(require 'dash)
(require 'string)
(require 'set)
(require 'constants)
(require 'general)
(require 'tvl)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Constants
;; Configuration
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(cl-defstruct bookmark label path kbd)
(defun bookmark-handle-directory-dwim (path)
"Open PATH as either a project directory or a regular directory."
(with-temp-buffer
(cd path)
(call-interactively #'project-find-file)))
(defconst bookmark-handle-directory #'bookmark-handle-directory-dwim
"Function to call when a bookmark points to a directory.")
(defconst bookmark-handle-file #'counsel-find-file-action
"Function to call when a bookmark points to a file.")
(defconst bookmark-whitelist
(list
(make-bookmark :label "depot"
:path tvl-depot-path
:kbd "d"))
"List of registered bookmarks.")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; API
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun bookmark-open (b)
"Open bookmark, B, in a new buffer or an ivy minibuffer."
(let ((path (bookmark-path b)))
(cond
((f-directory? path)
(funcall bookmark-handle-directory path))
((f-file? path)
(funcall bookmark-handle-file path)))))
"Open bookmark, B, as either a project directory or a regular directory."
(with-temp-buffer
(cd path)
(call-interactively #'project-find-file)))
(defun bookmark-install-kbd (b)
"Define two functions to explore B and assign them to keybindings."
@ -80,10 +45,5 @@
(format "J%s" (bookmark-kbd b)) `,(intern (format "bookmark-visit-%s" (bookmark-label b)))
(format "j%s" (bookmark-kbd b)) `,(intern (format "bookmark-browse-%s" (bookmark-label b)))))
(defun bookmark-install-kbds ()
"Install the keybindings defined herein."
(->> bookmark-whitelist
(-map #'bookmark-install-kbd)))
(provide 'bookmark)
;;; bookmark.el ends here

View file

@ -397,8 +397,10 @@
;; bookmarks
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Install KBDs like <SPC>jb to search through my monorepo.
(bookmark-install-kbds)
(bookmark-install-kbd
(make-bookmark :label "depot"
:path tvl-depot-path
:kbd "d"))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; refine