forked from colonelpanic/dotfiles
indexed-mapping
This commit is contained in:
parent
6292e7732b
commit
5faff2ecff
@ -534,6 +534,37 @@ The current directory is assumed to be the project's root otherwise."
|
|||||||
(bind-key "C-(" 'sp-backward-slurp-sexp smartparens-mode-map)
|
(bind-key "C-(" 'sp-backward-slurp-sexp smartparens-mode-map)
|
||||||
(bind-key "C-{" 'sp-backward-barf-sexp smartparens-mode-map)))
|
(bind-key "C-{" 'sp-backward-barf-sexp smartparens-mode-map)))
|
||||||
|
|
||||||
|
(defclass indexed-mapping ()
|
||||||
|
((mapping :initarg :mapping :initform nil)
|
||||||
|
(index :initarg :index :initform nil)))
|
||||||
|
|
||||||
|
(defmethod im-get ((im indexed-mapping) key)
|
||||||
|
(plist-get (oref im :mapping) key))
|
||||||
|
|
||||||
|
(defmethod im-index-get ((im indexed-mapping) value)
|
||||||
|
(plist-get (oref im :index) value))
|
||||||
|
|
||||||
|
(defmethod im-index-get-one ((im indexed-mapping) value)
|
||||||
|
(let ((keys (plist-get (oref im :index) value)))
|
||||||
|
(when keys (car keys))))
|
||||||
|
|
||||||
|
(defmethod im-put ((im indexed-mapping) key value)
|
||||||
|
;; Handle removing the key from where it is currently indexed
|
||||||
|
(let* ((current-value (plist-get (oref im :mapping) key))
|
||||||
|
(value-list (plist-get (oref im :index) current-value)))
|
||||||
|
(when value-list
|
||||||
|
(setq value-list (remove key value-list))
|
||||||
|
(oset im :index
|
||||||
|
(plist-put (oref im :index)
|
||||||
|
current-value value-list))))
|
||||||
|
;; Add the key to its new position in the index
|
||||||
|
(oset im :index
|
||||||
|
(plist-put (oref im :index)
|
||||||
|
value (cons key (plist-get (oref im :index) value))))
|
||||||
|
;; Add the key, value pair to the mapping
|
||||||
|
(oset im :mapping
|
||||||
|
(plist-put (oref im :mapping) key value)))
|
||||||
|
|
||||||
(use-package term
|
(use-package term
|
||||||
:config
|
:config
|
||||||
(progn
|
(progn
|
||||||
|
Loading…
Reference in New Issue
Block a user