> (defun tla--buffers-rmap nil
> "Reverse mapping from buffers to types.
> ((buffer1 . type1) (buffer2 . type2)...)")
Sorry. This should be defvar.
This is the patch. assoc list could be replicable with hashtable.
* looking for [EMAIL PROTECTED] to compare with
* comparing to [EMAIL PROTECTED]
M lisp/xtla-core.el
* modified files
--- orig/lisp/xtla-core.el
+++ mod/lisp/xtla-core.el
@@ -106,17 +106,27 @@
(\"path3\" buffer4 \"original name of buffer4\")))
Used to keep track of all the tla related buffers.")
+(defvar tla--buffers-rmap nil
+ "Reverse mapping from buffers to types.
+ ((buffer1 . type1) (buffer2 . type2)...)")
+
(defun tla--buffers-tree-remove (buffer)
"Remove BUFFER from the buffers tree."
- (dolist (type-cons tla--buffers-tree)
+ (let ((type (car (assq buffer tla--buffers-rmap)))
+ type-cons)
+ (when type
+ (setq tla--buffers-rmap (assq-delete-all buffer tla--buffers-rmap))
+ (setq type-cons (assq type tla--buffers-tree))
(dolist (path-buffer (cdr type-cons))
(when (eq (cadr path-buffer) buffer)
- (setcdr type-cons (delete path-buffer (cdr type-cons)))))))
+ (setcdr type-cons (delete path-buffer (cdr type-cons))))))))
(defun tla--buffers-tree-add (type path buffer)
"Add a buffer of TYPE visiting PATH to the buffers tree.
BUFFER should be the buffer to add."
(let ((current-assoc (assoc type tla--buffers-tree)))
+ (setq tla--buffers-rmap (cons (cons buffer type)
+ tla--buffers-rmap))
(if current-assoc
(setcdr current-assoc
(cons (list path buffer (buffer-name buffer))