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:
parent
a9effe690c
commit
a8e76b24e8
2 changed files with 10 additions and 48 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue