[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/dict-tree 5834dac 036/154: Replaced bare avl-trees
From: |
Stefan Monnier |
Subject: |
[elpa] externals/dict-tree 5834dac 036/154: Replaced bare avl-trees |
Date: |
Mon, 14 Dec 2020 12:21:39 -0500 (EST) |
branch: externals/dict-tree
commit 5834dacf871ba8b6f8ca0e99a4450cbdaee933a5
Author: Toby Cubitt <toby-predictive@dr-qubit.org>
Commit: tsc25 <toby-predictive@dr-qubit.org>
Replaced bare avl-trees
which were an ugly optimisation needed for efficiently printing and reading
tries, with trie-transform-for-print and trie-transform-from-read functions.
---
dict-tree.el | 537 +++++++++++++++++++++++++++++++----------------------------
1 file changed, 279 insertions(+), 258 deletions(-)
diff --git a/dict-tree.el b/dict-tree.el
index b61387f..d8a4b3e 100644
--- a/dict-tree.el
+++ b/dict-tree.el
@@ -1428,24 +1428,24 @@ bind any variables with names commencing \"--\"."
;; try to avoid dynamic binding bugs
(let ((--dictree--mapc--function function))
- ;; for a normal dictionary, map the function over its trie
- (if (not (dictree--meta-dict-p dict))
- (trie-mapc
- (lambda (key cell)
- (funcall --dictree--mapc--function
- key
- (dictree--cell-data cell)
- (dictree--cell-plist cell)))
- (dictree--trie dict)
- type reverse)
- ;; for a meta-dict, use a dictree-stack
- (let ((stack (dictree-stack dict))
- entry)
- (while (setq entry (dictree--stack-pop stack))
- (funcall --dictree--mapc--function
- (car entry)
- (dictree--cell-data (cdr entry))
- (dictree--cell-plist (cdr entry)))))
+ (if (dictree--meta-dict-p dict)
+ ;; for a meta-dict, use a dictree-stack
+ (let ((stack (dictree-stack dict))
+ entry)
+ (while (setq entry (dictree--stack-pop stack))
+ (funcall --dictree--mapc--function
+ (car entry)
+ (dictree--cell-data (cdr entry))
+ (dictree--cell-plist (cdr entry)))))
+ ;; for a normal dictionary, map the function over its trie
+ (trie-mapc
+ (lambda (key cell)
+ (funcall --dictree--mapc--function
+ key
+ (dictree--cell-data cell)
+ (dictree--cell-plist cell)))
+ (dictree--trie dict)
+ type reverse)
)))
@@ -2038,13 +2038,12 @@ the compiled version will be created, whereas if it is
the symbol
(let (dictname buff tmpfile)
;; add .el(c) extension to the filename if not already there
(cond
+ ;; remove .el(c) extension from filename
((string= (substring filename -3) ".el")
(setq filename (substring filename 0 -3)))
((string= (substring filename -4) ".elc")
(setq filename (substring filename 0 -4))))
-
- ;; remove .el(c) extension from filename to create saved dictionary
- ;; name
+ ;; create saved dictionary name from filename
(setq dictname (file-name-nondirectory filename))
(save-excursion
@@ -2054,8 +2053,8 @@ the compiled version will be created, whereas if it is
the symbol
(set-buffer buff)
;; call the appropriate write function to write the dictionary code
(if (dictree--meta-dict-p dict)
- (dictree--write-meta-dict-code dict dictname)
- (dictree--write-dict-code dict dictname))
+ (dictree--write-meta-dict-code dict dictname filename)
+ (dictree--write-dict-code dict dictname filename))
(save-buffer)
(kill-buffer buff))
@@ -2092,6 +2091,7 @@ the compiled version will be created, whereas if it is
the symbol
;; if writing to a different name, unload dictionary under old name and
;; reload it under new one
(setf (dictree-modified dict) nil)
+ (setf (dictree--filename dict) filename)
(unless (string= dictname (dictree-name dict))
(dictree-unload dict)
(dictree-load filename)))
@@ -2213,247 +2213,268 @@ NOT be saved even if its autosave flag is set."
-(defun dictree--write-dict-code (dict dictname)
+(defun dictree--write-dict-code (dict dictname filename)
;; Write code for normal dictionary DICT to current buffer, giving it the
- ;; name DICTNAME.
+ ;; name DICTNAME and file FILENAME.
(let (hashcode tmpdict tmptrie
lookup-alist complete-alist complete-ranked-alist)
;; --- convert trie data ---
- ;; if dictionary doesn't use any custom save functions, write dictionary's
- ;; trie directly as is
- (setq tmptrie (dictree--trie dict))
- ;; otherwise, create a temporary trie and populate it with the converted
- ;; contents of the dictionary's trie
- (when (or (dictree--data-savefun dict) (dictree--plist-savefun dict))
- (setq tmptrie
- (trie-create-custom
- (trie-comparison-function tmptrie)
- :createfun (trie--createfun tmptrie)
- :insertfun (trie--insertfun tmptrie)
- :deletefun (trie--deletefun tmptrie)
- :lookupfun (trie--lookupfun tmptrie)
- :mapfun (trie--mapfun tmptrie)
- :emptyfun (trie--emptyfun tmptrie)
- :stack-createfun (trie--stack-createfun tmptrie)
- :stack-popfun (trie--stack-popfun tmptrie)
- :stack-emptyfun (trie--stack-emptyfun tmptrie)))
- (trie-mapc
- (lambda (key cell)
- (trie-insert tmptrie key
- (dictree--cell-create
- (funcall (or (dictree--data-savefun dict) 'identity)
- (dictree--cell-data cell))
- (funcall (or (dictree--plist-savefun dict) 'identity)
- (dictree--cell-plist cell)))))
- (dictree--trie dict)))
- ;; generate code to convert contents of trie back to original form
- (cond
- ;; convert both data and plist
- ((and (dictree--data-loadfun dict) (dictree--plist-loadfun dict))
- (setq hashcode
- (concat
- hashcode
- "(trie-map\n"
- " (lambda (key cell)\n"
- " (dictree--cell-create\n"
- " (funcall (dictree--data-loadfun " dictname ")\n"
- " (dictree--cell-data cell))\n"
- " (funcall (dictree--plist-loadfun " dictname ")\n"
- " (dictree--cell-plist cell))))\n"
- " (dictree--trie " dictname "))\n")))
- ;; convert only data
- ((dictree--data-loadfun dict)
- (setq hashcode
- (concat
- hashcode
- "(trie-map\n"
- " (lambda (key cell)\n"
- " (dictree--cell-create\n"
- " (funcall (dictree--data-loadfun " dictname ")\n"
- " (dictree--cell-data cell))\n"
- " (dictree--cell-plist cell)))\n"
- " (dictree--trie " dictname "))\n")))
- ;; convert only plist
- ((dictree--plist-loadfun dict)
- (setq hashcode
- (concat
- hashcode
- "(trie-map\n"
- " (lambda (key cell)\n"
- " (dictree--cell-create\n"
- " (dictree--cell-data cell)\n"
- " (funcall (dictree--plist-loadfun " dictname ")\n"
- " (dictree--cell-plist cell))))\n"
- " (dictree--trie " dictname "))\n"))))
-
-
- ;; --- convert hash tables to alists ---
- ;; convert lookup cache hash table to alist, if it exists
- (when (dictree--lookup-cache-threshold dict)
- (maphash
- (lambda (key val)
- (push
- (cons key
- (cons (mapcar 'car (dictree--cache-completions val))
- (dictree--cache-maxnum val)))
- lookup-alist))
- (dictree--lookup-cache dict))
- ;; generate code to reconstruct the lookup hash table
- (setq hashcode
- (concat
- hashcode
- "(let ((lookup-cache (make-hash-table :test 'equal))\n"
- " (trie (dictree--trie " dictname ")))\n"
- " (mapc\n"
- " (lambda (entry)\n"
- " (puthash\n"
- " (car entry)\n"
- " (dictree--cache-create\n"
- " (mapcar\n"
- " (lambda (key)\n"
- " (cons key (trie-member trie key)))\n"
- " (dictree--cache-completions (cdr entry)))\n"
- " (dictree--cache-maxnum (cdr entry)))\n"
- " lookup-cache))\n"
- " (dictree--lookup-cache " dictname "))\n"
- " (setf (dictree--lookup-cache " dictname ")\n"
- " lookup-cache))\n"
- )))
-
- ;; convert completion cache hash table to alist, if it exists
- (when (dictree--complete-cache-threshold dict)
- (maphash
- (lambda (key val)
- (push
- (cons key
- (cons (mapcar 'car (dictree--cache-completions val))
- (dictree--cache-maxnum val)))
- complete-alist))
- (dictree-complete-cache dict))
- ;; generate code to reconstruct the completion hash table
- (setq
- hashcode
- (concat
- hashcode
- "(let ((complete-cache (make-hash-table :test 'equal))\n"
- " (trie (dictree--trie " dictname ")))\n"
- " (mapc\n"
- " (lambda (entry)\n"
- " (puthash\n"
- " (car entry)\n"
- " (dictree--cache-create\n"
- " (mapcar\n"
- " (lambda (key)\n"
- " (cons key (trie-member trie key)))\n"
- " (dictree--cache-completions (cdr entry)))\n"
- " (dictree--cache-maxnum (cdr entry)))\n"
- " complete-cache))\n"
- " (dictree--complete-cache " dictname "))\n"
- " (setf (dictree--complete-cache " dictname ")\n"
- " complete-cache))\n"
- )))
-
- ;; convert ranked completion cache hash table to alist, if it exists
- (when (dictree--complete-ranked-cache-threshold dict)
- (maphash
- (lambda (key val)
- (push
- (cons key
- (cons (mapcar 'car (dictree--cache-completions val))
- (dictree--cache-maxnum val)))
- complete-ranked-alist))
- (dictree--complete-ranked-cache dict))
- ;; generate code to reconstruct the ordered hash table
- (setq hashcode
- (concat
+ ;; transform trie to print form
+ (trie-transform-for-print (dictree--trie dict))
+ (unwind-protect
+ (progn
+ ;; if dictionary doesn't use any custom save functions, write
+ ;; dictionary's trie directly as is
+ (setq tmptrie (dictree--trie dict))
+ ;; otherwise, create a temporary trie and populate it with the
+ ;; converted contents of the dictionary's trie
+ (when (or (dictree--data-savefun dict)
+ (dictree--plist-savefun dict))
+ (setq tmptrie
+ (trie-create-custom
+ (trie-comparison-function tmptrie)
+ :createfun (trie--createfun tmptrie)
+ :insertfun (trie--insertfun tmptrie)
+ :deletefun (trie--deletefun tmptrie)
+ :lookupfun (trie--lookupfun tmptrie)
+ :mapfun (trie--mapfun tmptrie)
+ :emptyfun (trie--emptyfun tmptrie)
+ :stack-createfun (trie--stack-createfun tmptrie)
+ :stack-popfun (trie--stack-popfun tmptrie)
+ :stack-emptyfun (trie--stack-emptyfun tmptrie)))
+ (trie-mapc
+ (lambda (key cell)
+ (trie-insert tmptrie key
+ (dictree--cell-create
+ (funcall (or (dictree--data-savefun dict)
+ 'identity)
+ (dictree--cell-data cell))
+ (funcall (or (dictree--plist-savefun dict)
+ 'identity)
+ (dictree--cell-plist cell)))))
+ (dictree--trie dict)))
+ ;; generate code to convert contents of trie back to original form
+ (cond
+ ;; convert both data and plist
+ ((and (dictree--data-loadfun dict) (dictree--plist-loadfun dict))
+ (setq hashcode
+ (concat
+ hashcode
+ "(trie-map\n"
+ " (lambda (key cell)\n"
+ " (dictree--cell-create\n"
+ " (funcall (dictree--data-loadfun " dictname ")\n"
+ " (dictree--cell-data cell))\n"
+ " (funcall (dictree--plist-loadfun " dictname ")\n"
+ " (dictree--cell-plist cell))))\n"
+ " (dictree--trie " dictname "))\n")))
+ ;; convert only data
+ ((dictree--data-loadfun dict)
+ (setq hashcode
+ (concat
+ hashcode
+ "(trie-map\n"
+ " (lambda (key cell)\n"
+ " (dictree--cell-create\n"
+ " (funcall (dictree--data-loadfun " dictname ")\n"
+ " (dictree--cell-data cell))\n"
+ " (dictree--cell-plist cell)))\n"
+ " (dictree--trie " dictname "))\n")))
+ ;; convert only plist
+ ((dictree--plist-loadfun dict)
+ (setq hashcode
+ (concat
+ hashcode
+ "(trie-map\n"
+ " (lambda (key cell)\n"
+ " (dictree--cell-create\n"
+ " (dictree--cell-data cell)\n"
+ " (funcall (dictree--plist-loadfun " dictname ")\n"
+ " (dictree--cell-plist cell))))\n"
+ " (dictree--trie " dictname "))\n"))))
+
+
+ ;; --- convert hash tables to alists ---
+ ;; convert lookup cache hash table to alist, if it exists
+ (when (dictree--lookup-cache-threshold dict)
+ (maphash
+ (lambda (key val)
+ (push
+ (cons key
+ (cons (mapcar 'car (dictree--cache-completions val))
+ (dictree--cache-maxnum val)))
+ lookup-alist))
+ (dictree--lookup-cache dict))
+ ;; generate code to reconstruct the lookup hash table
+ (setq hashcode
+ (concat
+ hashcode
+ "(let ((lookup-cache (make-hash-table :test 'equal))\n"
+ " (trie (dictree--trie " dictname ")))\n"
+ " (mapc\n"
+ " (lambda (entry)\n"
+ " (puthash\n"
+ " (car entry)\n"
+ " (dictree--cache-create\n"
+ " (mapcar\n"
+ " (lambda (key)\n"
+ " (cons key (trie-member trie key)))\n"
+ " (dictree--cache-completions (cdr entry)))\n"
+ " (dictree--cache-maxnum (cdr entry)))\n"
+ " lookup-cache))\n"
+ " (dictree--lookup-cache " dictname "))\n"
+ " (setf (dictree--lookup-cache " dictname ")\n"
+ " lookup-cache))\n"
+ )))
+
+ ;; convert completion cache hash table to alist, if it exists
+ (when (dictree--complete-cache-threshold dict)
+ (maphash
+ (lambda (key val)
+ (push
+ (cons key
+ (cons (mapcar 'car (dictree--cache-completions val))
+ (dictree--cache-maxnum val)))
+ complete-alist))
+ (dictree-complete-cache dict))
+ ;; generate code to reconstruct the completion hash table
+ (setq
hashcode
- "(let ((complete-ranked-cache (make-hash-table :test 'equal))\n"
- " (trie (dictree--trie " dictname ")))\n"
- " (mapc\n"
- " (lambda (entry)\n"
- " (puthash\n"
- " (car entry)\n"
- " (dictree--cache-create\n"
- " (mapcar\n"
- " (lambda (key)\n"
- " (cons key (trie-member trie key)))\n"
- " (dictree--cache-completions (cdr entry)))\n"
- " (dictree--cache-maxnum (cdr entry)))\n"
- " complete-ranked-cache))\n"
- " (dictree--complete-ranked-cache " dictname "))\n"
- " (setf (dictree--complete-ranked-cache " dictname ")\n"
- " complete-ranked-cache))\n"
- )))
-
-
- ;; --- write to file ---
- ;; generate the structure to save
- (setq tmpdict (dictree-create))
- (setf (dictree--name tmpdict) dictname)
- (setf (dictree--filename tmpdict) nil) ; filename gets set on loading
- (setf (dictree--autosave tmpdict) (dictree--autosave dict))
- (setf (dictree--modified tmpdict) nil)
- (setf (dictree--comparison-function tmpdict)
- (dictree--comparison-function dict))
- (setf (dictree--insert-function tmpdict)
- (dictree--insert-function dict))
- (setf (dictree--insfun tmpdict)
- (dictree--insfun dict))
- (setf (dictree--rank-function tmpdict)
- (dictree--rank-function dict))
- (setf (dictree--rankfun tmpdict)
- (dictree--rankfun dict))
- (setf (dictree--cache-policy tmpdict)
- (dictree--cache-policy dict))
- (setf (dictree--cache-update-policy tmpdict)
- (dictree--cache-update-policy dict))
- (setf (dictree--lookup-cache tmpdict) lookup-alist)
- (setf (dictree--lookup-cache-threshold tmpdict)
- (dictree--lookup-cache-threshold dict))
- (setf (dictree--complete-cache tmpdict) complete-alist)
- (setf (dictree--complete-cache-threshold tmpdict)
- (dictree--complete-cache-threshold dict))
- (setf (dictree--complete-ranked-cache tmpdict) complete-ranked-alist)
- (setf (dictree--complete-ranked-cache-threshold tmpdict)
- (dictree--complete-ranked-cache-threshold dict))
- (setf (dictree--trie tmpdict) tmptrie)
- (setf (dictree--key-savefun tmpdict) (dictree--key-savefun dict))
- (setf (dictree--key-loadfun tmpdict) (dictree--key-loadfun dict))
- (setf (dictree--data-savefun tmpdict) (dictree--data-savefun dict))
- (setf (dictree--data-loadfun tmpdict) (dictree--data-loadfun dict))
- (setf (dictree--plist-savefun tmpdict) (dictree--plist-savefun dict))
- (setf (dictree--plist-loadfun tmpdict) (dictree--plist-loadfun dict))
- (setf (dictree--meta-dict-list tmpdict) nil)
-
- ;; write lisp code that generates the dictionary object
- (let ((restore-print-circle print-circle)
- (restore-print-level print-level)
- (restore-print-length print-length))
- (setq print-circle nil
- print-level nil
- print-length nil)
- (insert "(eval-when-compile (require 'cl))\n")
- (insert "(require 'dict-tree)\n")
- (insert "(defvar " dictname " nil \"Dictionary " dictname ".\")\n")
- (insert "(setq " dictname " '" (prin1-to-string tmpdict) ")\n")
- (insert hashcode)
- (insert "(setf (dictree-filename " dictname ")\n"
- " (locate-library \"" dictname "\"))\n")
- (insert "(unless (memq " dictname " dictree-loaded-list)\n"
- " (push " dictname " dictree-loaded-list))\n")
-;; (insert "(provide '" dictname ")\n")
- (setq print-circle restore-print-circle
- print-level restore-print-level
- print-length restore-print-length)
+ (concat
+ hashcode
+ "(let ((complete-cache (make-hash-table :test 'equal))\n"
+ " (trie (dictree--trie " dictname ")))\n"
+ " (mapc\n"
+ " (lambda (entry)\n"
+ " (puthash\n"
+ " (car entry)\n"
+ " (dictree--cache-create\n"
+ " (mapcar\n"
+ " (lambda (key)\n"
+ " (cons key (trie-member trie key)))\n"
+ " (dictree--cache-completions (cdr entry)))\n"
+ " (dictree--cache-maxnum (cdr entry)))\n"
+ " complete-cache))\n"
+ " (dictree--complete-cache " dictname "))\n"
+ " (setf (dictree--complete-cache " dictname ")\n"
+ " complete-cache))\n"
+ )))
+
+ ;; convert ranked completion cache hash table to alist, if it exists
+ (when (dictree--complete-ranked-cache-threshold dict)
+ (maphash
+ (lambda (key val)
+ (push
+ (cons key
+ (cons (mapcar 'car (dictree--cache-completions val))
+ (dictree--cache-maxnum val)))
+ complete-ranked-alist))
+ (dictree--complete-ranked-cache dict))
+ ;; generate code to reconstruct the ordered hash table
+ (setq hashcode
+ (concat
+ hashcode
+ "(let ((complete-ranked-cache (make-hash-table :test
'equal))\n"
+ " (trie (dictree--trie " dictname ")))\n"
+ " (mapc\n"
+ " (lambda (entry)\n"
+ " (puthash\n"
+ " (car entry)\n"
+ " (dictree--cache-create\n"
+ " (mapcar\n"
+ " (lambda (key)\n"
+ " (cons key (trie-member trie key)))\n"
+ " (dictree--cache-completions (cdr entry)))\n"
+ " (dictree--cache-maxnum (cdr entry)))\n"
+ " complete-ranked-cache))\n"
+ " (dictree--complete-ranked-cache " dictname "))\n"
+ " (setf (dictree--complete-ranked-cache " dictname ")\n"
+ " complete-ranked-cache))\n"
+ )))
+
+
+ ;; --- write to file ---
+ ;; generate the structure to save
+ (setq tmpdict (dictree-create))
+ (setf (dictree--trie tmpdict) tmptrie)
+ (setf (dictree--name tmpdict) dictname)
+ (setf (dictree--filename tmpdict) filename)
+ (setf (dictree--autosave tmpdict)
+ (dictree--autosave dict))
+ (setf (dictree--modified tmpdict) nil)
+ (setf (dictree--comparison-function tmpdict)
+ (dictree--comparison-function dict))
+ (setf (dictree--insert-function tmpdict)
+ (dictree--insert-function dict))
+ (setf (dictree--insfun tmpdict)
+ (dictree--insfun dict))
+ (setf (dictree--rank-function tmpdict)
+ (dictree--rank-function dict))
+ (setf (dictree--rankfun tmpdict)
+ (dictree--rankfun dict))
+ (setf (dictree--cache-policy tmpdict)
+ (dictree--cache-policy dict))
+ (setf (dictree--cache-update-policy tmpdict)
+ (dictree--cache-update-policy dict))
+ (setf (dictree--lookup-cache tmpdict)
+ lookup-alist)
+ (setf (dictree--lookup-cache-threshold tmpdict)
+ (dictree--lookup-cache-threshold dict))
+ (setf (dictree--complete-cache tmpdict)
+ complete-alist)
+ (setf (dictree--complete-cache-threshold tmpdict)
+ (dictree--complete-cache-threshold dict))
+ (setf (dictree--complete-ranked-cache tmpdict)
+ complete-ranked-alist)
+ (setf (dictree--complete-ranked-cache-threshold tmpdict)
+ (dictree--complete-ranked-cache-threshold dict))
+ (setf (dictree--key-savefun tmpdict)
+ (dictree--key-savefun dict))
+ (setf (dictree--key-loadfun tmpdict)
+ (dictree--key-loadfun dict))
+ (setf (dictree--data-savefun tmpdict)
+ (dictree--data-savefun dict))
+ (setf (dictree--data-loadfun tmpdict)
+ (dictree--data-loadfun dict))
+ (setf (dictree--plist-savefun tmpdict)
+ (dictree--plist-savefun dict))
+ (setf (dictree--plist-loadfun tmpdict)
+ (dictree--plist-loadfun dict))
+ (setf (dictree--meta-dict-list tmpdict) nil)
+
+ ;; write lisp code that generates the dictionary object
+ (let ((restore-print-circle print-circle)
+ (restore-print-level print-level)
+ (restore-print-length print-length))
+ (setq print-circle nil
+ print-level nil
+ print-length nil)
+ (insert "(eval-when-compile (require 'cl))\n")
+ (insert "(require 'dict-tree)\n")
+ (insert "(defvar " dictname " nil \"Dictionary " dictname ".\")\n")
+ (insert "(setq " dictname " '" (prin1-to-string tmpdict) ")\n")
+ (insert "(trie-transform-from-read (dictree--trie " dictname "))\n")
+ (when hashcode (insert hashcode))
+;;; (insert "(setf (dictree-filename " dictname ")\n"
+;;; " (locate-library \"" dictname "\"))\n")
+ (insert "(unless (memq " dictname " dictree-loaded-list)\n"
+ " (push " dictname " dictree-loaded-list))\n")
+;;; (insert "(provide '" dictname ")\n")
+ (setq print-circle restore-print-circle
+ print-level restore-print-level
+ print-length restore-print-length)))
+
+ ;; transform trie back to usable form
+ (trie-transform-from-read (dictree--trie dict)) ; unwind-protected
)))
-(defun dictree--write-meta-dict-code (dict dictname)
- "Write code for meta-dictionary DICT to current buffer,
-giving it the name DICTNAME."
+(defun dictree--write-meta-dict-code (dict dictname filename)
+ ;; Write code for meta-dictionary DICT to current buffer, giving it the name
+ ;; DICTNAME and file FILENAME.
(let (hashcode tmpdict lookup-alist complete-alist
complete-ranked-alist)
@@ -2513,7 +2534,7 @@ giving it the name DICTNAME."
;; generate the structure to save
(setq tmpdict (dictree-create))
(setf (dictree--meta-dict-name tmpdict) dictname)
- (setf (dictree--meta-dict-filename tmpdict) nil) ; set on loading
+ (setf (dictree--meta-dict-filename tmpdict) filename)
(setf (dictree--meta-dict-autosave tmpdict) (dictree--autosave dict))
(setf (dictree--meta-dict-modified tmpdict) nil)
(setf (dictree--meta-dict-combine-function tmpdict)
@@ -2551,12 +2572,12 @@ giving it the name DICTNAME."
" " dictname "\n"
" (mapcar (lambda (name) (eval (intern-soft name)))\n"
" (dictree--meta-dict-dictlist " dictname " )))\n")
- (insert hashcode)
- (insert "(setf (dictree-filename " dictname ")"
- " (locate-library \"" dictname "\"))\n")
+ (when hashcode (insert hashcode))
+;;; (insert "(setf (dictree-filename " dictname ")"
+;;; " (locate-library \"" dictname "\"))\n")
(insert "(unless (memq " dictname " dictree-loaded-list)"
" (push " dictname " dictree-loaded-list))\n")
-;; (insert "(provide '" dictname ")\n")
+;;; (insert "(provide '" dictname ")\n")
))
- [elpa] externals/dict-tree d88b867 002/154: Version 0.10.3 of the predictive completion package., (continued)
- [elpa] externals/dict-tree d88b867 002/154: Version 0.10.3 of the predictive completion package., Stefan Monnier, 2020/12/14
- [elpa] externals/dict-tree 7b52ebd 005/154: Version 0.13.1 of the predictive completion package., Stefan Monnier, 2020/12/14
- [elpa] externals/dict-tree ac40f3c 004/154: Version 0.12.2 of the predictive completion package., Stefan Monnier, 2020/12/14
- [elpa] externals/dict-tree 2bca928 003/154: Version 0.12 of the predictive completion package., Stefan Monnier, 2020/12/14
- [elpa] externals/dict-tree 3ecd763 006/154: Added minor miscellaneous new features, mostly to predictive.el., Stefan Monnier, 2020/12/14
- [elpa] externals/dict-tree 26f5dd3 011/154: Work around byte-compilation and goto-line bugs., Stefan Monnier, 2020/12/14
- [elpa] externals/dict-tree 7562023 012/154: Make use of :family attribute of completion-tooltip-face., Stefan Monnier, 2020/12/14
- [elpa] externals/dict-tree f9bf379 013/154: Complete re-write of dict-tree.el, based on new trie.el., Stefan Monnier, 2020/12/14
- [elpa] externals/dict-tree 329110b 018/154: Fixed bug in unranked dictree-complete., Stefan Monnier, 2020/12/14
- [elpa] externals/dict-tree baa4931 028/154: Doesn't quite work - revert to breaking setf abstraction, Stefan Monnier, 2020/12/14
- [elpa] externals/dict-tree 5834dac 036/154: Replaced bare avl-trees,
Stefan Monnier <=
- [elpa] externals/dict-tree 673fd2a 029/154: Abstract away the setcar used to set the data component of a cell, Stefan Monnier, 2020/12/14
- [elpa] externals/dict-tree 2700e21 035/154: Don't compile wrapped functions explicitly, Stefan Monnier, 2020/12/14
- [elpa] externals/dict-tree 70f99ee 037/154: Make certain dictionary commands (mostly saving and loading) interactive again., Stefan Monnier, 2020/12/14
- [elpa] externals/dict-tree 35346a4 041/154: Bug-fix in dictree--write-dict-code, Stefan Monnier, 2020/12/14
- [elpa] externals/dict-tree 608fcd4 049/154: Bug-fix to dictree--write-dict-code, Stefan Monnier, 2020/12/14
- [elpa] externals/dict-tree 179c0b5 045/154: Bug-fix to messages displayed by dictree-populate-from-file, Stefan Monnier, 2020/12/14
- [elpa] externals/dict-tree 6b24547 052/154: Allow "]" to be included in a negated character alternatives, by placing immediately after the "[^"., Stefan Monnier, 2020/12/14
- [elpa] externals/dict-tree a61f90e 053/154: Bug-fix in dictree-wildcard-search, Stefan Monnier, 2020/12/14
- [elpa] externals/dict-tree b33203a 060/154: Manage loading and unloading of dictionaries automatically in predictive-mode, Stefan Monnier, 2020/12/14
- [elpa] externals/dict-tree 920d959 077/154: Replaced advice with cedet-edebug.el for pretty-printing, Stefan Monnier, 2020/12/14