diff options
author | JSDurand <mmemmew@gmail.com> | 2021-01-13 13:01:34 +0800 |
---|---|---|
committer | JSDurand <mmemmew@gmail.com> | 2021-01-13 13:01:34 +0800 |
commit | 3666deaed5b0baf0a74f14db5872105c9e7865f9 (patch) | |
tree | 3535c3f57ed9d5b1cd4e3e81831f627840b6e81b /suffix tree | |
parent | 1700588e1a3cfb5fa45fb64393c68782bc35fc38 (diff) |
A temporary intermeidate step
Now I got almost every functionality that we need, including pdf,
mu4e, magit, et cetera.
Diffstat (limited to 'suffix tree')
-rw-r--r-- | suffix tree/LCS.el | 314 | ||||
-rw-r--r-- | suffix tree/ST.cpp | 131 | ||||
-rw-r--r-- | suffix tree/generalized-suffix-tree.el | 398 | ||||
-rw-r--r-- | suffix tree/gst test ground.txt | 12291 | ||||
-rw-r--r-- | suffix tree/lcs test ground.txt | 180 | ||||
-rw-r--r-- | suffix tree/suffiex-tree.txt | 168 | ||||
-rw-r--r-- | suffix tree/suffix tree test ground.txt | 145 | ||||
-rw-r--r-- | suffix tree/suffix-tree files.zip | bin | 0 -> 14879 bytes | |||
-rw-r--r-- | suffix tree/suffix-tree.el | 397 |
9 files changed, 14024 insertions, 0 deletions
diff --git a/suffix tree/LCS.el b/suffix tree/LCS.el new file mode 100644 index 0000000..989c25e --- /dev/null +++ b/suffix tree/LCS.el @@ -0,0 +1,314 @@ +;;; LCS.el --- Longest Common Substrings of multiple strings -*- lexical-binding: t; -*- + +;;; Author: Durand +;;; Version: 0.0.1 + +;;; Commentary: + +;; First generate a generalized suffix tree of the strings, then +;; traverses the tree in a depth-first manner to find the nodes under +;; which there are suffixes from each and every string in question. +;; Finally collect and return the list of all substrings which are +;; common to all input strings and which have the longest length. + +;;; Code: + +;;; Our building block +(require 'generalized-suffix-tree) + +;;;###autoload +(defun lcs-string (strs) + "Return the longest common substring of STRS." + (lcs-interpret (lcs strs) strs)) + +;;;###autoload +(defun lcs-edge-length (node str-lens) + "Return the length of the edge going into NODE. +Unlike `gst-edge-length', this does not need to know about POSITION +and NUM, since it is assumed that the tree is already built +before calling this function." + (let ((start (car (cdr node))) + (end (cond + ((eq (car (cdr (cdr node))) 'infty) + (nth (car node) str-lens)) + (t (car (cdr (cdr node))))))) + (- end start))) + +;;;###autoload +(defun lcs-get-parent-length (parents) + "Return the length of the parent strings PARENTS." + (let* ((ls parents) + (result 0)) + (while (consp ls) + (setq result (+ result (- (caddr (car ls)) + (cadr (car ls))))) + (setq ls (cdr ls))) + result)) + +;;;###autoload +(defun lcs-get-env (node str-lens) + "Return the information we want to keep on the stack." + (let ((num (car node)) + (start (car (cdr node))) + (end (cond + ((eq (car (cdr (cdr node))) 'infty) + (nth (car node) str-lens)) + (t (car (cdr (cdr node)))))) + (children (car (nthcdr 4 node)))) + (list num start end children))) + +;;; For debug purposes + +;;;###autoload +(defmacro lcs-debug (&rest vars) + "Print the names and the values of VARS." + `(insert + (mapconcat 'identity + (list + ,@(mapcar + (lambda (var) + `(format "%s: %S" + ,(symbol-name var) + ,var)) + vars)) + "\n") + "\n")) + +;;;###autoload +(defun lcs-pretty-stack-element (element) + "Return a pretty representation of ELEMENT." + (concat + "(" + (mapconcat + (lambda (slot) + (format "%S" + (cond + ((hash-table-p slot) + (gst-pretty-hash-table slot)) + ((consp slot) + (mapconcat #'lcs-pretty-stack-element slot ", ")) + (t slot)))) + element ", ") + ")")) + +;;;###autoload +(defun lcs-pretty-stack (stack) + "Prettify a stack." + (concat + "[ " + (mapconcat #'lcs-pretty-stack-element + stack + ",") + " ]" + "\n")) + +;;;###autoload +(defun lcs-prepare-env (long-env) + "Take the first three elements out of LONG-ENV." + (cons (car long-env) + (cons (cadr long-env) + (cons (caddr long-env) + nil)))) + +;;; Interpreting the result + +;;;###autoload +(defun lcs-interpret (result strs &optional just-length) + "Since the raw RESULT of `lcs' is not human-readable, we interpret it. +If JUST-LENGTH is non-nil, then this only returns the length of +the longest common substrings. Otherwise, it returns the longest +common substrings themselves. + +Of course, without STRS, we don't even know what our strings are." + (cond + (just-length (car result)) + (t (mapcar + (lambda (one-result) + (let ((chain one-result) + temp res-str) + (while (consp one-result) + (setq temp (car one-result)) + (setq res-str + (concat + (let ((nstr (nth (car temp) strs))) + (substring nstr + (cadr temp) + (min (caddr temp) (length nstr)))) + res-str)) + (setq one-result (cdr one-result))) + res-str)) + (cadr result))))) + +;;; The main engine + +;;;###autoload +(defun lcs (strs &optional just-length) + "Return the longest common substring of a list STRS of strings. + +If JUST-LENGTH is non-nil, then this only returns the length of the +longest common substring. Otherwise, it returns the length as well as the +longest common substring itself." + (let* ((strs (mapcar (lambda (str) + (vconcat str (list -1))) + strs)) + (str-lens (mapcar #'length strs)) + (tree (gst-build-for-strs strs str-lens)) + (max-height 0) + (bits-table (make-hash-table)) + (discovered-table (make-hash-table)) + (all-common (1- (expt 2 (length strs)))) + max-env stack current temp) + ;; The format of elements on the stack is as follows. + ;; (number start end children node-number parents) + + ;; Here number identifies the string this comes from. start, end + ;; and children have the same meaning as in the tree. Node-number + ;; is the number of the node that is recorded in the hash-table + ;; tree. And finally parents is a list of triples that represents + ;; parent segments. + (setq stack (progn + (maphash + (lambda (letter node) + (setq temp + (cons + (append + (lcs-get-env (gethash node tree) str-lens) + (list node nil ; parent strings represented as a triple of integers + )) + temp))) + (car (nthcdr 4 (gethash 1 tree)))) + temp)) + (setq temp nil) + ;; (insert (format "count: %d\n" count)) + ;; (lcs-debug all-common) + ;; (insert "stack: " (lcs-pretty-stack stack)) + (while (consp stack) + ;; (insert "stack: " (lcs-pretty-stack stack)) + (setq current (car stack)) + (let ((current-length (+ (lcs-get-parent-length (car (nthcdr 5 current))) + (- (min (caddr current) + ;; The final character does + ;; not count! + (1- (nth (car current) + str-lens))) + (cadr current)))) + (current-env (list (car current) + (cadr current) + (caddr current) + (car (nthcdr 3 current)))) + (current-children (car (nthcdr 3 current)))) + ;; (insert (format "\n\ncount: %d\n" count)) + ;; (insert "current: " (lcs-pretty-stack-element current) "\n") + ;; (lcs-debug current-length max-env max-height) + ;; (insert (format "current children: %S\n" (gst-pretty-hash-table current-children))) + ;; (insert (format + ;; "discovered: %S\n" + ;; (gst-pretty-hash-table discovered-table))) + ;; (insert (format + ;; "bits: %S\n" + ;; (gst-pretty-hash-table bits-table))) + (cond + ((not (hash-table-empty-p current-children)) ; There are children + (cond + ((gethash (car (nthcdr 4 current)) discovered-table) + ;; This node is already traversed + ;; This means we have already given bits to its children + (let ((bit (progn + (setq temp 0) + (maphash (lambda (child-letter child-num) + (setq + temp + (logior temp + (gethash child-num bits-table)))) + current-children) + temp) + ;; An alternative + ;; (apply #'logior + ;; (mapcar (lambda (num) + ;; (gethash num bits-table)) + ;; (hash-table-values current-children))) + )) + (setq temp nil) + (puthash (car (nthcdr 4 current)) bit bits-table) + ;; (lcs-debug bit) + ;; (insert (format + ;; "bits: %S\n" + ;; (gst-pretty-hash-table bits-table))) + (cond + ((= bit all-common) ; a common substring + (cond + ((> current-length max-height) + (setq max-height current-length) + (setq max-env (list + (cons + (list (car current) + (cadr current) + (caddr current)) + (mapcar #'lcs-prepare-env + (car (nthcdr 5 current))))))) + ((= current-length max-height) + (setq max-env + (cons (cons + (list (car current) + (cadr current) + (caddr current)) + (mapcar #'lcs-prepare-env + (car (nthcdr 5 current)))) + max-env))))))) + (setq stack (cdr stack))) + (t ; a new node! + (setq stack + (append + (progn + (maphash + (lambda (letter node) + (setq temp + (cons + (append + (lcs-get-env (gethash node tree) str-lens) + (list node + (cons current-env (car (nthcdr 5 current))))) + temp))) + current-children) + temp) + stack)) + (puthash (car (nthcdr 4 current)) 1 discovered-table) + ;; (insert (format "current children: %S\n" (gst-pretty-hash-table current-children))) + ;; (insert "stack: " (lcs-pretty-stack stack)) + (setq temp nil)))) + (t ; a leaf + (let* ((node-number (car (nthcdr 4 current))) + (leaf-labels (car (nthcdr 5 (gethash node-number tree)))) + (bit (apply #'logior + (mapcar (lambda (label) + (ash 1 (car label))) + leaf-labels)))) + ;; (insert "leaf") + ;; (lcs-debug node-number leaf-labels bit) + (puthash node-number bit bits-table) + (cond + ((= bit all-common) ; a common substring + (cond + ((> current-length max-height) + (setq max-height current-length) + (setq max-env (list + (cons + (list (car current) + (cadr current) + (caddr current)) + (mapcar #'lcs-prepare-env + (car (nthcdr 5 current))))))) + ((= current-length max-height) + (setq max-env + (cons (cons + (list (car current) + (cadr current) + (caddr current)) + (mapcar #'lcs-prepare-env + (car (nthcdr 5 current)))) + max-env)))))) + (setq stack (cdr stack))))))) + (list max-height max-env))) + +(provide 'lcs) +;;; LCS.el ends here diff --git a/suffix tree/ST.cpp b/suffix tree/ST.cpp new file mode 100644 index 0000000..cad0ccb --- /dev/null +++ b/suffix tree/ST.cpp @@ -0,0 +1,131 @@ +/** + * Copyright (c) 2016 Sergey Makagonov + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + */ + +#include <iostream> +#include <stdio.h> +#include <string> + +const int oo = 1<<25; +const int ALPHABET_SIZE = 256; +const int MAXN = 5000; + +using namespace std; + +int root, last_added, pos, needSL, remainder, + active_node, active_e, active_len; + +struct node { +/* + There is no need to create an "Edge" struct. + Information about the edge is stored right in the node. + [start; end) interval specifies the edge, + by which the node is connected to its parent node. +*/ + + int start, end, slink; + int next[ALPHABET_SIZE]; + + int edge_length() { + return min(end, pos + 1) - start; + } +}; + +node tree[2*MAXN]; +char text[MAXN]; + +int new_node(int start, int end = oo) { + node nd; + nd.start = start; + nd.end = end; + nd.slink = 0; + for (int i = 0; i < ALPHABET_SIZE; i++) + nd.next[i] = 0; + tree[++last_added] = nd; + return last_added; +} + +char active_edge() { + return text[active_e]; +} + +void add_SL(int node) { + if (needSL > 0) tree[needSL].slink = node; + needSL = node; +} + +bool walk_down(int node) { + if (active_len >= tree[node].edge_length()) { + active_e += tree[node].edge_length(); + active_len -= tree[node].edge_length(); + active_node = node; + return true; + } + return false; +} + +void st_init() { + needSL = 0, last_added = 0, pos = -1, + remainder = 0, active_node = 0, active_e = 0, active_len = 0; + root = active_node = new_node(-1, -1); +} + +void st_extend(char c) { + text[++pos] = c; + needSL = 0; + remainder++; + while(remainder > 0) { + if (active_len == 0) active_e = pos; + if (tree[active_node].next[active_edge()] == 0) { + int leaf = new_node(pos); + tree[active_node].next[active_edge()] = leaf; + add_SL(active_node); //rule 2 + } else { + int nxt = tree[active_node].next[active_edge()]; + if (walk_down(nxt)) continue; //observation 2 + if (text[tree[nxt].start + active_len] == c) { //observation 1 + active_len++; + add_SL(active_node); //observation 3 + break; + } + int split = new_node(tree[nxt].start, tree[nxt].start + active_len); + tree[active_node].next[active_edge()] = split; + int leaf = new_node(pos); + tree[split].next[c] = leaf; + tree[nxt].start += active_len; + tree[split].next[text[tree[nxt].start]] = nxt; + add_SL(split); //rule 2 + } + remainder--; + if (active_node == root && active_len > 0) { //rule 1 + active_len--; + active_e = pos - remainder + 1; + } else + active_node = tree[active_node].slink > 0 ? tree[active_node].slink : root; //rule 3 + } +} + +int main() { + // + return 0; +} diff --git a/suffix tree/generalized-suffix-tree.el b/suffix tree/generalized-suffix-tree.el new file mode 100644 index 0000000..227aea9 --- /dev/null +++ b/suffix tree/generalized-suffix-tree.el @@ -0,0 +1,398 @@ +;;; generalized-suffiex-tree.el --- Building a generalized suffix tree -*- lexical-binding: t; -*- + +;;; Author: Durand +;;; Version: 0.0.2 + +;;; Commentary: + +;; Our node is represented as a list of the following elements: + +;; number , from which string this edge comes +;; start , which is the starting index of the edge going from its parent +;; node to this node +;; end , the index of the end of the above edge +;; suffix-link, the index of the node this node's suffix-link points to +;; children , a hash-table of pairs of integers and indices of its +;; children +;; leaf-labels, a list of pairs (number start), where +;; number means the number-th string and +;; start is the starting position of this edge. +;; This element is nil for the internal nodes. + +;; To compute the length of the edge going into NODE we use: +;; (- (min end (1+ position)) start) +;; which is actually how far the position is on that edge, +;; if it is on that edge. + +;; We use only one terminating symbol, and that is -1. + +;;; Code: + +;;;###autoload +(defun gst-min (&rest args) + "Return the minimum among ARGS. +If an argument is 'infty, then it is considered greater than +every number." + (apply #'min (delq nil + (mapcar + (lambda (arg) + (cond + ((number-or-marker-p arg) arg) + ((eq arg 'infty) nil))) + args)))) + +;;;###autoload +(defun gst-edge-length (node position num str-lens) + "Return the length of the edge into NODE. +See the comment above this function for the reason +POSITION and NUM are here." + (let* ((node-active-num (car node)) + (leafp (eq (car (cdr (cdr node))) 'infty)) + (leaf-labels (cond (leafp (car (nthcdr 5 node)))))) + (- (cond + ((and (/= node-active-num num) + leafp) + (nth node-active-num str-lens)) + ((/= node-active-num num) + (caddr node)) + (t (gst-min (caddr node) (1+ position)))) + (cond + ((and (= node-active-num num) + leafp) + (or (cadr (assoc num leaf-labels #'eq)) + (cadr node))) + (t (cadr node)))))) + +;;;###autoload +(defun gst-new-node (tree last-added number start &optional end suffix-start) + "Make a new node with START and END as the coming edge. +NUMBER is the number of string the label belongs to. +Then add the new node to TREE. +LAST-ADDED is the number of elements already in the TREE." + (let* ((end (or end 'infty) ;; 'infty represents the index of a leaf + ) + (suffix-link 0) ;; The suffix link is initially 0 + (new-node + (cond ((eq end 'infty) + (list number start end suffix-link (make-hash-table) + (list (list number suffix-start)))) + (t + (list number start end suffix-link (make-hash-table)))))) + (puthash (1+ last-added) new-node tree) + (1+ last-added))) + +;;;###autoload +(defun gst-add-leaf-label (tree leaf number start) + "Add a label to LEAF." + (let* ((actual-node (gethash leaf tree)) + (leaf-labels (cdr (cdr (cdr (cdr (cdr actual-node))))))) + (cond ((consp leaf-labels) + (setcar leaf-labels + (cons (list number start) + (car leaf-labels))))))) + +;;;###autoload +(defun gst-add-suffix-link (tree need-sl node) + "If NEED-SL is positive, then add the suffix link. +In particular, the node corresponding to NEED-SL in TREE +gets a suffix link pointing to NODE. + +This always returns NODE." + (cond + ((and (> need-sl 1) (/= need-sl node)) + (setcar (cdr (cdr (cdr (gethash need-sl tree)))) node))) + node) + +;;;###autoload +(defun gst-canonize (tree node position active-number active-edge-index active-length active-node + str-lens) + "Walk down TREE to find the correct active point." + (let* ((actual-node (gethash node tree)) + (node-edge-length (gst-edge-length actual-node position active-number + str-lens))) + (cond + ((>= active-length node-edge-length) + (list t + active-number + (+ active-edge-index + node-edge-length) + (- active-length + node-edge-length) + node)) + (t + (list nil + active-number + active-edge-index + active-length + active-node))))) + +;;;###autoload +(defsubst gst-aref (strs num index) + "Return the INDEX-th element in NUM-th element of STRS." + (aref (nth num strs) index)) + +;;;###autoload +(defun gst-extend-tree (tree last-added position remain + active-node active-number active-edge-index + active-length character strs num str-lens) + "Extend a tree by CHARACTER in NUM-th string of STRS. +The return value is +(tree + last-added remain active-node + active-number active-edge-index active-length)" + (let* ((need-sl 0) + (remain (1+ remain)) + continue-p breakp) + (while (and (not breakp) (> remain 0)) + (setq continue-p nil breakp nil) + (cond + ((= active-length 0) + (setq active-edge-index position) + (setq active-number num))) + (let* ((actual-node (gethash active-node tree)) + (nxt (cond + (actual-node + (gethash (gst-aref strs active-number active-edge-index) + (cadr (cdr (cdr (cdr actual-node))))))))) + (cond + ((null nxt) + (let ((leaf (gst-new-node tree last-added num position nil + (- position remain -1)))) + (setq last-added leaf) + (puthash (gst-aref strs active-number active-edge-index) + leaf + (cadr (cdr (cdr (cdr (gethash active-node tree)))))) + (setq need-sl (gst-add-suffix-link tree need-sl active-node))) + ;; rule 2 + ) + (t + (let* ((result (gst-canonize + tree nxt position active-number + active-edge-index active-length active-node + str-lens))) + (cond + ((car result) + ;; observation 2 + (setq active-number (car (cdr result))) + (setq active-edge-index (car (cdr (cdr result)))) + (setq active-length (car (cdr (cdr (cdr result))))) + (setq active-node (car (cdr (cdr (cdr (cdr result)))))) + (setq continue-p t)) + (t + (cond + ((eq (gst-aref strs + (car (gethash nxt tree)) + (+ active-length + (cadr (gethash nxt tree)))) + character) + ;; observation 1 + (setq active-length (1+ active-length)) + (setq need-sl (gst-add-suffix-link tree need-sl active-node)) + (setq breakp t) + ;; add a label + (cond + ((eq character -1) ; terminating symbol + (gst-add-leaf-label tree nxt num (- position remain -1)))))) + (cond + (breakp) + (t ;; splitting + (let ((split (gst-new-node + tree last-added (car (gethash nxt tree)) (cadr (gethash nxt tree)) + (+ (cadr (gethash nxt tree)) active-length)))) + (setq last-added split) + (puthash + (gst-aref strs active-number active-edge-index) + split (cadr (cdr (cdr (cdr (gethash active-node tree)))))) + (let ((leaf (gst-new-node tree last-added num position + nil (- position remain -1)))) + (setq last-added leaf) + (puthash character leaf + (cadddr (cdr (gethash split tree)))) + (setcar (cdr (gethash nxt tree)) + (+ (cadr (gethash nxt tree)) + active-length)) + (puthash (gst-aref strs + (car (gethash nxt tree)) + (cadr (gethash nxt tree))) + nxt + (cadddr (cdr (gethash split tree)))) + ;; rule 2 + (setq need-sl + (gst-add-suffix-link tree need-sl split))))))))))) + (cond + ((or continue-p breakp)) + (t + (setq remain (1- remain)) + (cond + ((and (eq active-node 1) ; root + (> active-length 0)) + (setq active-length (1- active-length)) + (setq active-edge-index + (1+ (- position remain)))) + (t + (setq active-node + (let ((slink (cadddr (gethash active-node tree)))) + (cond ; follow the suffix link or go to root + ((> slink 1) slink) + (t 1)))))))))) + (list tree last-added remain active-node + active-number active-edge-index active-length))) + +;;;###autoload +(defun gst-build-for-strs (strs &optional str-lens) + "Build the generalized suffix tree for STRS. +One can optionally provide STR-LENS to avoid calculating the +lengths again." + (let* ((len (length strs)) + (index 0) + (tree (make-hash-table)) + (last-added 0) + (active-node (gst-new-node tree last-added index -1 -1)) + (str-lens (or str-lens (mapcar #'length strs)))) + (setq last-added active-node) + (while (< index len) + (let* ((position 0) + (character (ignore-errors (gst-aref strs index position))) + (remain 0) + (active-node 1) ; start from the root + (active-number index) + (active-edge-index 0) + (active-length 0) + old-character result) ; temporary holder + (while character + (setq old-character character) + (setq result (gst-extend-tree tree last-added position remain + active-node active-number active-edge-index + active-length character strs index + str-lens)) + (setq tree (pop result)) + (setq last-added (pop result)) + (setq remain (pop result)) + (setq active-node (pop result)) + (setq active-number (pop result)) + (setq active-edge-index (pop result)) + (setq active-length (pop result)) + (setq position (1+ position)) + (setq character (ignore-errors (gst-aref strs index position))) + (cond + ((characterp old-character) + (insert (format "After adding character %c:\n" old-character)) + (gst-print-tree tree + (append (seq-take strs index) + (list (concat + (seq-take (nth index strs) position) + "$")))) + (insert "\n\n")) + ((= old-character -1) + (insert (format "After adding character -1:\n")) + (gst-print-tree tree + (seq-take strs (1+ index))) + (insert "\n\n"))))) + (setq index (1+ index)) + (insert "\n\n")) + tree)) + +;;; Printing + +;; This section is not necessary. It is here just to print the trees +;; to make sure we don't make some strange errors. + +(require 'hierarchy) +(require 'seq) + +;;;###autoload +(defun gst-print-strs (strs) + "Print strings STRS nicely." + (mapc (lambda (str) + (mapc (lambda (char) + (cond ((characterp char) (insert char)) + (t (insert ", ")))) + str)) + strs)) + +;;;###autoload +(defun gst-pretty-hash-table (table) + "Only returns the useful parts from a table." + (let (keys-values-alist) + (maphash + (lambda (key value) + (setq keys-values-alist + (cons + (cons key value) + keys-values-alist))) + table) + keys-values-alist)) + +;;;###autoload +(defun gst-pretty-node (node) + "Outputs a prettified NODE." + (format "(%d %d %s %d %s %S)" + (car node) (cadr node) + (caddr node) (cadddr node) + (gst-pretty-hash-table (car (nthcdr 4 node))) + (car (nthcdr 5 node)))) + +;;;###autoload +(defun gst-print-tree-for-strs (strs) + "Print the generalized suffix tree for STRS." + (let* ((strs (mapcar (lambda (str) + (vconcat str (list -1))) + strs)) + (symbol (make-symbol "gtree"))) + (set symbol (gst-build-for-strs strs)) + (insert "Generalized suffix tree for: ") + (gst-print-strs strs) + (delete-region (- (point) 2) (point)) + (insert ":\n") + (gst-print-tree (symbol-value symbol) strs))) + +;;;###autoload +(defvar gst-full-error-p nil + "Whether to print full nodes in the output.") + +;;;###autoload +(defun gst-print-tree (tree strs) + "Print TREE with the aid of STRS." + (let* ((symbol-tree (make-symbol "new-hierarchy"))) + (set symbol-tree (hierarchy-new)) + (maphash + (lambda (key value) + (hierarchy-add-tree + (symbol-value symbol-tree) key nil + (lambda (item) + (hash-table-values (car (nthcdr 4 (gethash item tree))))))) + tree) + (hierarchy-print + (symbol-value symbol-tree) + (lambda (item) + (cond ((= item 1) "root") + (t (let ((actual-str + (let* ((node (gethash item tree)) + (leafp (eq (caddr node) 'infty)) + (leaf-labels + (cond (leafp (car (nthcdr 5 node)))))) + (concat + (seq-subseq + (nth (car node) strs) + (min (cadr node) (1- (length (nth (car node) strs)))) + (cond (leafp -1) + (t (caddr node)))) + (cond + (leafp + (apply + #'concat + (mapcar + (lambda (label) + (let ((first (car label)) + (second (cadr label))) + (format "$ (%d : %d)" + first second))) + leaf-labels)))))))) + (cond (gst-full-error-p + (concat + (format "key: %d, %s, %s" item actual-str + (gst-pretty-node (gethash item tree))))) + (t actual-str))))))))) + +(provide 'generalized-suffix-tree) +;;; generalized-suffiex-tree.el ends here diff --git a/suffix tree/gst test ground.txt b/suffix tree/gst test ground.txt new file mode 100644 index 0000000..2dad02e --- /dev/null +++ b/suffix tree/gst test ground.txt @@ -0,0 +1,12291 @@ +Generalized suffix tree for: abab, baba: +root + a + $ (1 : 3) + b + $ (0 : 2) + a + $ (1 : 1) + b$ (0 : 0) + b + $ (0 : 3) + a + $ (1 : 2) + b + a$ (1 : 0) + $ (0 : 1) + $ (1 : 4)$ (0 : 4) + + + +Generalized suffix tree for: abab, baba, cbabd: +root + a + $ (1 : 3) + b + $ (0 : 2) + a + $ (1 : 1) + b$ (0 : 0) + d$ (2 : 2) + b + $ (0 : 3) + a + $ (1 : 2) + b + a$ (1 : 0) + $ (0 : 1) + d$ (2 : 1) + d$ (2 : 3) + $ (2 : 5)$ (1 : 4)$ (0 : 4) + cbabd$ (2 : 0) + d$ (2 : 4) + + + +After adding character i: +root + i$ (0 : 0) + + +After adding character d: +root + id$ (0 : 0) + d$ (0 : 1) + + +After adding character o: +root + ido$ (0 : 0) + do$ (0 : 1) + o$ (0 : 2) + + +After adding character -: +root + ido-$ (0 : 0) + do-$ (0 : 1) + o-$ (0 : 2) + -$ (0 : 3) + + +After adding character c: +root + ido-c$ (0 : 0) + do-c$ (0 : 1) + o-c$ (0 : 2) + -c$ (0 : 3) + c$ (0 : 4) + + +After adding character o: +root + ido-co$ (0 : 0) + do-co$ (0 : 1) + o-co$ (0 : 2) + -co$ (0 : 3) + co$ (0 : 4) + + +After adding character m: +root + ido-com$ (0 : 0) + do-com$ (0 : 1) + o + m$ (0 : 5) + -com$ (0 : 2) + -com$ (0 : 3) + com$ (0 : 4) + m$ (0 : 6) + + +After adding character p: +root + ido-comp$ (0 : 0) + do-comp$ (0 : 1) + o + mp$ (0 : 5) + -comp$ (0 : 2) + -comp$ (0 : 3) + comp$ (0 : 4) + mp$ (0 : 6) + p$ (0 : 7) + + +After adding character l: +root + ido-compl$ (0 : 0) + do-compl$ (0 : 1) + o + mpl$ (0 : 5) + -compl$ (0 : 2) + -compl$ (0 : 3) + compl$ (0 : 4) + mpl$ (0 : 6) + pl$ (0 : 7) + l$ (0 : 8) + + +After adding character e: +root + ido-comple$ (0 : 0) + do-comple$ (0 : 1) + o + mple$ (0 : 5) + -comple$ (0 : 2) + -comple$ (0 : 3) + comple$ (0 : 4) + mple$ (0 : 6) + ple$ (0 : 7) + le$ (0 : 8) + e$ (0 : 9) + + +After adding character t: +root + ido-complet$ (0 : 0) + do-complet$ (0 : 1) + o + mplet$ (0 : 5) + -complet$ (0 : 2) + -complet$ (0 : 3) + complet$ (0 : 4) + mplet$ (0 : 6) + plet$ (0 : 7) + let$ (0 : 8) + et$ (0 : 9) + t$ (0 : 10) + + +After adding character i: +root + ido-completi$ (0 : 0) + do-completi$ (0 : 1) + o + mpleti$ (0 : 5) + -completi$ (0 : 2) + -completi$ (0 : 3) + completi$ (0 : 4) + mpleti$ (0 : 6) + pleti$ (0 : 7) + leti$ (0 : 8) + eti$ (0 : 9) + ti$ (0 : 10) + + +After adding character o: +root + i + o$ (0 : 11) + do-completio$ (0 : 0) + do-completio$ (0 : 1) + o + mpletio$ (0 : 5) + -completio$ (0 : 2) + -completio$ (0 : 3) + completio$ (0 : 4) + mpletio$ (0 : 6) + pletio$ (0 : 7) + letio$ (0 : 8) + etio$ (0 : 9) + tio$ (0 : 10) + + +After adding character n: +root + i + on$ (0 : 11) + do-completion$ (0 : 0) + do-completion$ (0 : 1) + o + mpletion$ (0 : 5) + -completion$ (0 : 2) + n$ (0 : 12) + -completion$ (0 : 3) + completion$ (0 : 4) + mpletion$ (0 : 6) + pletion$ (0 : 7) + letion$ (0 : 8) + etion$ (0 : 9) + tion$ (0 : 10) + n$ (0 : 13) + + +After adding character s: +root + i + ons$ (0 : 11) + do-completions$ (0 : 0) + do-completions$ (0 : 1) + o + mpletions$ (0 : 5) + -completions$ (0 : 2) + ns$ (0 : 12) + -completions$ (0 : 3) + completions$ (0 : 4) + mpletions$ (0 : 6) + pletions$ (0 : 7) + letions$ (0 : 8) + etions$ (0 : 9) + tions$ (0 : 10) + ns$ (0 : 13) + s$ (0 : 14) + + +After adding character -1: +root + i + ons$ (0 : 11) + do-completions$ (0 : 0) + do-completions$ (0 : 1) + o + mpletions$ (0 : 5) + -completions$ (0 : 2) + ns$ (0 : 12) + -completions$ (0 : 3) + completions$ (0 : 4) + mpletions$ (0 : 6) + pletions$ (0 : 7) + letions$ (0 : 8) + etions$ (0 : 9) + tions$ (0 : 10) + ns$ (0 : 13) + s$ (0 : 14) + $ (0 : 15) + + + + +After adding character c: +root + i + ons$ (0 : 11) + do-completions$ (0 : 0) + do-completions$ (0 : 1) + o + mpletions$ (0 : 5) + -completions$ (0 : 2) + ns$ (0 : 12) + -completions$ (0 : 3) + completions$ (0 : 4) + mpletions$ (0 : 6) + pletions$ (0 : 7) + letions$ (0 : 8) + etions$ (0 : 9) + tions$ (0 : 10) + ns$ (0 : 13) + s$ (0 : 14) + $ (0 : 15) + + +After adding character o: +root + i + ons$ (0 : 11) + do-completions$ (0 : 0) + do-completions$ (0 : 1) + o + mpletions$ (0 : 5) + -completions$ (0 : 2) + ns$ (0 : 12) + -completions$ (0 : 3) + completions$ (0 : 4) + mpletions$ (0 : 6) + pletions$ (0 : 7) + letions$ (0 : 8) + etions$ (0 : 9) + tions$ (0 : 10) + ns$ (0 : 13) + s$ (0 : 14) + $ (0 : 15) + + +After adding character m: +root + i + ons$ (0 : 11) + do-completions$ (0 : 0) + do-completions$ (0 : 1) + o + mpletions$ (0 : 5) + -completions$ (0 : 2) + ns$ (0 : 12) + -completions$ (0 : 3) + completions$ (0 : 4) + mpletions$ (0 : 6) + pletions$ (0 : 7) + letions$ (0 : 8) + etions$ (0 : 9) + tions$ (0 : 10) + ns$ (0 : 13) + s$ (0 : 14) + $ (0 : 15) + + +After adding character i: +root + i + ons$ (0 : 11) + do-completions$ (0 : 0) + do-completions$ (0 : 1) + o + m + i$ (1 : 1) + pletions$ (0 : 5) + -completions$ (0 : 2) + ns$ (0 : 12) + -completions$ (0 : 3) + com + i$ (1 : 0) + pletions$ (0 : 4) + m + i$ (1 : 2) + pletions$ (0 : 6) + pletions$ (0 : 7) + letions$ (0 : 8) + etions$ (0 : 9) + tions$ (0 : 10) + ns$ (0 : 13) + s$ (0 : 14) + $ (0 : 15) + + +After adding character n: +root + i + ons$ (0 : 11) + do-completions$ (0 : 0) + n$ (1 : 3) + do-completions$ (0 : 1) + o + m + in$ (1 : 1) + pletions$ (0 : 5) + -completions$ (0 : 2) + ns$ (0 : 12) + -completions$ (0 : 3) + com + in$ (1 : 0) + pletions$ (0 : 4) + m + in$ (1 : 2) + pletions$ (0 : 6) + pletions$ (0 : 7) + letions$ (0 : 8) + etions$ (0 : 9) + tions$ (0 : 10) + ns$ (0 : 13) + s$ (0 : 14) + $ (0 : 15) + + +After adding character t: +root + i + ons$ (0 : 11) + do-completions$ (0 : 0) + nt$ (1 : 3) + do-completions$ (0 : 1) + o + m + int$ (1 : 1) + pletions$ (0 : 5) + -completions$ (0 : 2) + ns$ (0 : 12) + -completions$ (0 : 3) + com + int$ (1 : 0) + pletions$ (0 : 4) + m + int$ (1 : 2) + pletions$ (0 : 6) + pletions$ (0 : 7) + letions$ (0 : 8) + etions$ (0 : 9) + tions$ (0 : 10) + n + t$ (1 : 4) + s$ (0 : 13) + s$ (0 : 14) + $ (0 : 15) + + +After adding character -: +root + i + ons$ (0 : 11) + do-completions$ (0 : 0) + nt-$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-$ (1 : 1) + pletions$ (0 : 5) + -completions$ (0 : 2) + ns$ (0 : 12) + -completions$ (0 : 3) + com + int-$ (1 : 0) + pletions$ (0 : 4) + m + int-$ (1 : 2) + pletions$ (0 : 6) + pletions$ (0 : 7) + letions$ (0 : 8) + etions$ (0 : 9) + t + -$ (1 : 5) + ions$ (0 : 10) + n + t-$ (1 : 4) + s$ (0 : 13) + s$ (0 : 14) + $ (0 : 15) + + +After adding character c: +root + i + ons$ (0 : 11) + do-completions$ (0 : 0) + nt-c$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-c$ (1 : 1) + pletions$ (0 : 5) + -completions$ (0 : 2) + ns$ (0 : 12) + -completions$ (0 : 3) + com + int-c$ (1 : 0) + pletions$ (0 : 4) + m + int-c$ (1 : 2) + pletions$ (0 : 6) + pletions$ (0 : 7) + letions$ (0 : 8) + etions$ (0 : 9) + t + -c$ (1 : 5) + ions$ (0 : 10) + n + t-c$ (1 : 4) + s$ (0 : 13) + s$ (0 : 14) + $ (0 : 15) + + +After adding character o: +root + i + ons$ (0 : 11) + do-completions$ (0 : 0) + nt-co$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-co$ (1 : 1) + pletions$ (0 : 5) + -completions$ (0 : 2) + ns$ (0 : 12) + -completions$ (0 : 3) + com + int-co$ (1 : 0) + pletions$ (0 : 4) + m + int-co$ (1 : 2) + pletions$ (0 : 6) + pletions$ (0 : 7) + letions$ (0 : 8) + etions$ (0 : 9) + t + -co$ (1 : 5) + ions$ (0 : 10) + n + t-co$ (1 : 4) + s$ (0 : 13) + s$ (0 : 14) + $ (0 : 15) + + +After adding character m: +root + i + ons$ (0 : 11) + do-completions$ (0 : 0) + nt-com$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-com$ (1 : 1) + pletions$ (0 : 5) + -completions$ (0 : 2) + ns$ (0 : 12) + -completions$ (0 : 3) + com + int-com$ (1 : 0) + pletions$ (0 : 4) + m + int-com$ (1 : 2) + pletions$ (0 : 6) + pletions$ (0 : 7) + letions$ (0 : 8) + etions$ (0 : 9) + t + -com$ (1 : 5) + ions$ (0 : 10) + n + t-com$ (1 : 4) + s$ (0 : 13) + s$ (0 : 14) + $ (0 : 15) + + +After adding character p: +root + i + ons$ (0 : 11) + do-completions$ (0 : 0) + nt-comp$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-comp$ (1 : 1) + pletions$ (0 : 5) + -completions$ (0 : 2) + ns$ (0 : 12) + -completions$ (0 : 3) + com + int-comp$ (1 : 0) + pletions$ (0 : 4) + m + int-comp$ (1 : 2) + pletions$ (0 : 6) + pletions$ (0 : 7) + letions$ (0 : 8) + etions$ (0 : 9) + t + -comp$ (1 : 5) + ions$ (0 : 10) + n + t-comp$ (1 : 4) + s$ (0 : 13) + s$ (0 : 14) + $ (0 : 15) + + +After adding character l: +root + i + ons$ (0 : 11) + do-completions$ (0 : 0) + nt-compl$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-compl$ (1 : 1) + pletions$ (0 : 5) + -completions$ (0 : 2) + ns$ (0 : 12) + -completions$ (0 : 3) + com + int-compl$ (1 : 0) + pletions$ (0 : 4) + m + int-compl$ (1 : 2) + pletions$ (0 : 6) + pletions$ (0 : 7) + letions$ (0 : 8) + etions$ (0 : 9) + t + -compl$ (1 : 5) + ions$ (0 : 10) + n + t-compl$ (1 : 4) + s$ (0 : 13) + s$ (0 : 14) + $ (0 : 15) + + +After adding character e: +root + i + ons$ (0 : 11) + do-completions$ (0 : 0) + nt-comple$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-comple$ (1 : 1) + pletions$ (0 : 5) + -completions$ (0 : 2) + ns$ (0 : 12) + -completions$ (0 : 3) + com + int-comple$ (1 : 0) + pletions$ (0 : 4) + m + int-comple$ (1 : 2) + pletions$ (0 : 6) + pletions$ (0 : 7) + letions$ (0 : 8) + etions$ (0 : 9) + t + -comple$ (1 : 5) + ions$ (0 : 10) + n + t-comple$ (1 : 4) + s$ (0 : 13) + s$ (0 : 14) + $ (0 : 15) + + +After adding character t: +root + i + ons$ (0 : 11) + do-completions$ (0 : 0) + nt-complet$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-complet$ (1 : 1) + pletions$ (0 : 5) + -completions$ (0 : 2) + ns$ (0 : 12) + -completions$ (0 : 3) + com + int-complet$ (1 : 0) + pletions$ (0 : 4) + m + int-complet$ (1 : 2) + pletions$ (0 : 6) + pletions$ (0 : 7) + letions$ (0 : 8) + etions$ (0 : 9) + t + -complet$ (1 : 5) + ions$ (0 : 10) + n + t-complet$ (1 : 4) + s$ (0 : 13) + s$ (0 : 14) + $ (0 : 15) + + +After adding character i: +root + i + ons$ (0 : 11) + do-completions$ (0 : 0) + nt-completi$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completi$ (1 : 1) + pletions$ (0 : 5) + -completions$ (0 : 2) + ns$ (0 : 12) + -completions$ (0 : 3) + com + int-completi$ (1 : 0) + pletions$ (0 : 4) + m + int-completi$ (1 : 2) + pletions$ (0 : 6) + pletions$ (0 : 7) + letions$ (0 : 8) + etions$ (0 : 9) + t + -completi$ (1 : 5) + ions$ (0 : 10) + n + t-completi$ (1 : 4) + s$ (0 : 13) + s$ (0 : 14) + $ (0 : 15) + + +After adding character o: +root + i + ons$ (0 : 11) + do-completions$ (0 : 0) + nt-completio$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completio$ (1 : 1) + pletions$ (0 : 5) + -completions$ (0 : 2) + ns$ (0 : 12) + -completions$ (0 : 3) + com + int-completio$ (1 : 0) + pletions$ (0 : 4) + m + int-completio$ (1 : 2) + pletions$ (0 : 6) + pletions$ (0 : 7) + letions$ (0 : 8) + etions$ (0 : 9) + t + -completio$ (1 : 5) + ions$ (0 : 10) + n + t-completio$ (1 : 4) + s$ (0 : 13) + s$ (0 : 14) + $ (0 : 15) + + +After adding character n: +root + i + ons$ (0 : 11) + do-completions$ (0 : 0) + nt-completion$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion$ (1 : 1) + pletions$ (0 : 5) + -completions$ (0 : 2) + ns$ (0 : 12) + -completions$ (0 : 3) + com + int-completion$ (1 : 0) + pletions$ (0 : 4) + m + int-completion$ (1 : 2) + pletions$ (0 : 6) + pletions$ (0 : 7) + letions$ (0 : 8) + etions$ (0 : 9) + t + -completion$ (1 : 5) + ions$ (0 : 10) + n + t-completion$ (1 : 4) + s$ (0 : 13) + s$ (0 : 14) + $ (0 : 15) + + +After adding character -: +root + i + on + -$ (1 : 14) + s$ (0 : 11) + do-completions$ (0 : 0) + nt-completion-$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-$ (1 : 1) + pletion + -$ (1 : 8) + s$ (0 : 5) + -completions$ (0 : 2) + n + -$ (1 : 15) + s$ (0 : 12) + -completion + -$ (1 : 6) + s$ (0 : 3) + com + int-completion-$ (1 : 0) + pletion + -$ (1 : 7) + s$ (0 : 4) + m + int-completion-$ (1 : 2) + pletion + -$ (1 : 9) + s$ (0 : 6) + pletion + -$ (1 : 10) + s$ (0 : 7) + letion + -$ (1 : 11) + s$ (0 : 8) + etion + -$ (1 : 12) + s$ (0 : 9) + t + -completion-$ (1 : 5) + ion + -$ (1 : 13) + s$ (0 : 10) + n + t-completion-$ (1 : 4) + s$ (0 : 13) + -$ (1 : 16) + s$ (0 : 14) + $ (0 : 15) + + +After adding character a: +root + i + on + -a$ (1 : 14) + s$ (0 : 11) + do-completions$ (0 : 0) + nt-completion-a$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-a$ (1 : 1) + pletion + -a$ (1 : 8) + s$ (0 : 5) + -completions$ (0 : 2) + n + -a$ (1 : 15) + s$ (0 : 12) + - + a$ (1 : 17) + completion + -a$ (1 : 6) + s$ (0 : 3) + com + int-completion-a$ (1 : 0) + pletion + -a$ (1 : 7) + s$ (0 : 4) + m + int-completion-a$ (1 : 2) + pletion + -a$ (1 : 9) + s$ (0 : 6) + pletion + -a$ (1 : 10) + s$ (0 : 7) + letion + -a$ (1 : 11) + s$ (0 : 8) + etion + -a$ (1 : 12) + s$ (0 : 9) + t + -completion-a$ (1 : 5) + ion + -a$ (1 : 13) + s$ (0 : 10) + n + t-completion-a$ (1 : 4) + s$ (0 : 13) + -a$ (1 : 16) + s$ (0 : 14) + $ (0 : 15) + a$ (1 : 18) + + +After adding character t: +root + i + on + -at$ (1 : 14) + s$ (0 : 11) + do-completions$ (0 : 0) + nt-completion-at$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at$ (1 : 1) + pletion + -at$ (1 : 8) + s$ (0 : 5) + -completions$ (0 : 2) + n + -at$ (1 : 15) + s$ (0 : 12) + - + at$ (1 : 17) + completion + -at$ (1 : 6) + s$ (0 : 3) + com + int-completion-at$ (1 : 0) + pletion + -at$ (1 : 7) + s$ (0 : 4) + m + int-completion-at$ (1 : 2) + pletion + -at$ (1 : 9) + s$ (0 : 6) + pletion + -at$ (1 : 10) + s$ (0 : 7) + letion + -at$ (1 : 11) + s$ (0 : 8) + etion + -at$ (1 : 12) + s$ (0 : 9) + t + -completion-at$ (1 : 5) + ion + -at$ (1 : 13) + s$ (0 : 10) + n + t-completion-at$ (1 : 4) + s$ (0 : 13) + -at$ (1 : 16) + s$ (0 : 14) + $ (0 : 15) + at$ (1 : 18) + + +After adding character -: +root + i + on + -at-$ (1 : 14) + s$ (0 : 11) + do-completions$ (0 : 0) + nt-completion-at-$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-$ (1 : 1) + pletion + -at-$ (1 : 8) + s$ (0 : 5) + -completions$ (0 : 2) + n + -at-$ (1 : 15) + s$ (0 : 12) + - + at-$ (1 : 17) + completion + -at-$ (1 : 6) + s$ (0 : 3) + com + int-completion-at-$ (1 : 0) + pletion + -at-$ (1 : 7) + s$ (0 : 4) + m + int-completion-at-$ (1 : 2) + pletion + -at-$ (1 : 9) + s$ (0 : 6) + pletion + -at-$ (1 : 10) + s$ (0 : 7) + letion + -at-$ (1 : 11) + s$ (0 : 8) + etion + -at-$ (1 : 12) + s$ (0 : 9) + t + -completion-at-$ (1 : 5) + ion + -at-$ (1 : 13) + s$ (0 : 10) + n + t-completion-at-$ (1 : 4) + s$ (0 : 13) + -at-$ (1 : 16) + s$ (0 : 14) + $ (0 : 15) + at-$ (1 : 18) + + +After adding character p: +root + i + on + -at-p$ (1 : 14) + s$ (0 : 11) + do-completions$ (0 : 0) + nt-completion-at-p$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-p$ (1 : 1) + pletion + -at-p$ (1 : 8) + s$ (0 : 5) + -completions$ (0 : 2) + n + -at-p$ (1 : 15) + s$ (0 : 12) + - + at-p$ (1 : 17) + completion + -at-p$ (1 : 6) + s$ (0 : 3) + p$ (1 : 20) + com + int-completion-at-p$ (1 : 0) + pletion + -at-p$ (1 : 7) + s$ (0 : 4) + m + int-completion-at-p$ (1 : 2) + pletion + -at-p$ (1 : 9) + s$ (0 : 6) + pletion + -at-p$ (1 : 10) + s$ (0 : 7) + letion + -at-p$ (1 : 11) + s$ (0 : 8) + etion + -at-p$ (1 : 12) + s$ (0 : 9) + t + - + p$ (1 : 19) + completion-at-p$ (1 : 5) + ion + -at-p$ (1 : 13) + s$ (0 : 10) + n + t-completion-at-p$ (1 : 4) + s$ (0 : 13) + -at-p$ (1 : 16) + s$ (0 : 14) + $ (0 : 15) + at-p$ (1 : 18) + + +After adding character o: +root + i + on + -at-po$ (1 : 14) + s$ (0 : 11) + do-completions$ (0 : 0) + nt-completion-at-po$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-po$ (1 : 1) + pletion + -at-po$ (1 : 8) + s$ (0 : 5) + -completions$ (0 : 2) + n + -at-po$ (1 : 15) + s$ (0 : 12) + - + at-po$ (1 : 17) + completion + -at-po$ (1 : 6) + s$ (0 : 3) + po$ (1 : 20) + com + int-completion-at-po$ (1 : 0) + pletion + -at-po$ (1 : 7) + s$ (0 : 4) + m + int-completion-at-po$ (1 : 2) + pletion + -at-po$ (1 : 9) + s$ (0 : 6) + p + o$ (1 : 21) + letion + -at-po$ (1 : 10) + s$ (0 : 7) + letion + -at-po$ (1 : 11) + s$ (0 : 8) + etion + -at-po$ (1 : 12) + s$ (0 : 9) + t + - + po$ (1 : 19) + completion-at-po$ (1 : 5) + ion + -at-po$ (1 : 13) + s$ (0 : 10) + n + t-completion-at-po$ (1 : 4) + s$ (0 : 13) + -at-po$ (1 : 16) + s$ (0 : 14) + $ (0 : 15) + at-po$ (1 : 18) + + +After adding character i: +root + i + on + -at-poi$ (1 : 14) + s$ (0 : 11) + do-completions$ (0 : 0) + nt-completion-at-poi$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-poi$ (1 : 1) + pletion + -at-poi$ (1 : 8) + s$ (0 : 5) + -completions$ (0 : 2) + n + -at-poi$ (1 : 15) + s$ (0 : 12) + i$ (1 : 22) + - + at-poi$ (1 : 17) + completion + -at-poi$ (1 : 6) + s$ (0 : 3) + poi$ (1 : 20) + com + int-completion-at-poi$ (1 : 0) + pletion + -at-poi$ (1 : 7) + s$ (0 : 4) + m + int-completion-at-poi$ (1 : 2) + pletion + -at-poi$ (1 : 9) + s$ (0 : 6) + p + oi$ (1 : 21) + letion + -at-poi$ (1 : 10) + s$ (0 : 7) + letion + -at-poi$ (1 : 11) + s$ (0 : 8) + etion + -at-poi$ (1 : 12) + s$ (0 : 9) + t + - + poi$ (1 : 19) + completion-at-poi$ (1 : 5) + ion + -at-poi$ (1 : 13) + s$ (0 : 10) + n + t-completion-at-poi$ (1 : 4) + s$ (0 : 13) + -at-poi$ (1 : 16) + s$ (0 : 14) + $ (0 : 15) + at-poi$ (1 : 18) + + +After adding character n: +root + i + on + -at-poin$ (1 : 14) + s$ (0 : 11) + do-completions$ (0 : 0) + nt-completion-at-poin$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-poin$ (1 : 1) + pletion + -at-poin$ (1 : 8) + s$ (0 : 5) + -completions$ (0 : 2) + n + -at-poin$ (1 : 15) + s$ (0 : 12) + in$ (1 : 22) + - + at-poin$ (1 : 17) + completion + -at-poin$ (1 : 6) + s$ (0 : 3) + poin$ (1 : 20) + com + int-completion-at-poin$ (1 : 0) + pletion + -at-poin$ (1 : 7) + s$ (0 : 4) + m + int-completion-at-poin$ (1 : 2) + pletion + -at-poin$ (1 : 9) + s$ (0 : 6) + p + oin$ (1 : 21) + letion + -at-poin$ (1 : 10) + s$ (0 : 7) + letion + -at-poin$ (1 : 11) + s$ (0 : 8) + etion + -at-poin$ (1 : 12) + s$ (0 : 9) + t + - + poin$ (1 : 19) + completion-at-poin$ (1 : 5) + ion + -at-poin$ (1 : 13) + s$ (0 : 10) + n + t-completion-at-poin$ (1 : 4) + s$ (0 : 13) + -at-poin$ (1 : 16) + s$ (0 : 14) + $ (0 : 15) + at-poin$ (1 : 18) + + +After adding character t: +root + i + on + -at-point$ (1 : 14) + s$ (0 : 11) + do-completions$ (0 : 0) + nt-completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + -at-point$ (1 : 8) + s$ (0 : 5) + -completions$ (0 : 2) + n + -at-point$ (1 : 15) + s$ (0 : 12) + int$ (1 : 22) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + point$ (1 : 20) + com + int-completion-at-point$ (1 : 0) + pletion + -at-point$ (1 : 7) + s$ (0 : 4) + m + int-completion-at-point$ (1 : 2) + pletion + -at-point$ (1 : 9) + s$ (0 : 6) + p + oint$ (1 : 21) + letion + -at-point$ (1 : 10) + s$ (0 : 7) + letion + -at-point$ (1 : 11) + s$ (0 : 8) + etion + -at-point$ (1 : 12) + s$ (0 : 9) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + -at-point$ (1 : 13) + s$ (0 : 10) + n + t-completion-at-point$ (1 : 4) + s$ (0 : 13) + -at-point$ (1 : 16) + s$ (0 : 14) + $ (0 : 15) + at-point$ (1 : 18) + + +After adding character -1: +root + i + on + -at-point$ (1 : 14) + s$ (0 : 11) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + -at-point$ (1 : 8) + s$ (0 : 5) + -completions$ (0 : 2) + n + -at-point$ (1 : 15) + s$ (0 : 12) + int$ (1 : 22) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + point$ (1 : 20) + com + int-completion-at-point$ (1 : 0) + pletion + -at-point$ (1 : 7) + s$ (0 : 4) + m + int-completion-at-point$ (1 : 2) + pletion + -at-point$ (1 : 9) + s$ (0 : 6) + p + oint$ (1 : 21) + letion + -at-point$ (1 : 10) + s$ (0 : 7) + letion + -at-point$ (1 : 11) + s$ (0 : 8) + etion + -at-point$ (1 : 12) + s$ (0 : 9) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + -at-point$ (1 : 13) + s$ (0 : 10) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + -at-point$ (1 : 16) + s$ (0 : 14) + $ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + + + + +After adding character p: +root + i + on + -at-point$ (1 : 14) + s$ (0 : 11) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + -at-point$ (1 : 8) + s$ (0 : 5) + -completions$ (0 : 2) + n + -at-point$ (1 : 15) + s$ (0 : 12) + int$ (1 : 22) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + point$ (1 : 20) + com + int-completion-at-point$ (1 : 0) + pletion + -at-point$ (1 : 7) + s$ (0 : 4) + m + int-completion-at-point$ (1 : 2) + pletion + -at-point$ (1 : 9) + s$ (0 : 6) + p + oint$ (1 : 21) + letion + -at-point$ (1 : 10) + s$ (0 : 7) + letion + -at-point$ (1 : 11) + s$ (0 : 8) + etion + -at-point$ (1 : 12) + s$ (0 : 9) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + -at-point$ (1 : 13) + s$ (0 : 10) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + -at-point$ (1 : 16) + s$ (0 : 14) + $ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + + +After adding character r: +root + i + on + -at-point$ (1 : 14) + s$ (0 : 11) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + -at-point$ (1 : 8) + s$ (0 : 5) + -completions$ (0 : 2) + n + -at-point$ (1 : 15) + s$ (0 : 12) + int$ (1 : 22) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + point$ (1 : 20) + com + int-completion-at-point$ (1 : 0) + pletion + -at-point$ (1 : 7) + s$ (0 : 4) + m + int-completion-at-point$ (1 : 2) + pletion + -at-point$ (1 : 9) + s$ (0 : 6) + p + oint$ (1 : 21) + letion + -at-point$ (1 : 10) + s$ (0 : 7) + r$ (2 : 0) + letion + -at-point$ (1 : 11) + s$ (0 : 8) + etion + -at-point$ (1 : 12) + s$ (0 : 9) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + -at-point$ (1 : 13) + s$ (0 : 10) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + -at-point$ (1 : 16) + s$ (0 : 14) + $ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + r$ (2 : 1) + + +After adding character e: +root + i + on + -at-point$ (1 : 14) + s$ (0 : 11) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + -at-point$ (1 : 8) + s$ (0 : 5) + -completions$ (0 : 2) + n + -at-point$ (1 : 15) + s$ (0 : 12) + int$ (1 : 22) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + point$ (1 : 20) + com + int-completion-at-point$ (1 : 0) + pletion + -at-point$ (1 : 7) + s$ (0 : 4) + m + int-completion-at-point$ (1 : 2) + pletion + -at-point$ (1 : 9) + s$ (0 : 6) + p + oint$ (1 : 21) + letion + -at-point$ (1 : 10) + s$ (0 : 7) + re$ (2 : 0) + letion + -at-point$ (1 : 11) + s$ (0 : 8) + etion + -at-point$ (1 : 12) + s$ (0 : 9) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + -at-point$ (1 : 13) + s$ (0 : 10) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + -at-point$ (1 : 16) + s$ (0 : 14) + $ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + re$ (2 : 1) + + +After adding character v: +root + i + on + -at-point$ (1 : 14) + s$ (0 : 11) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + -at-point$ (1 : 8) + s$ (0 : 5) + -completions$ (0 : 2) + n + -at-point$ (1 : 15) + s$ (0 : 12) + int$ (1 : 22) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + point$ (1 : 20) + com + int-completion-at-point$ (1 : 0) + pletion + -at-point$ (1 : 7) + s$ (0 : 4) + m + int-completion-at-point$ (1 : 2) + pletion + -at-point$ (1 : 9) + s$ (0 : 6) + p + oint$ (1 : 21) + letion + -at-point$ (1 : 10) + s$ (0 : 7) + rev$ (2 : 0) + letion + -at-point$ (1 : 11) + s$ (0 : 8) + e + v$ (2 : 2) + tion + -at-point$ (1 : 12) + s$ (0 : 9) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + -at-point$ (1 : 13) + s$ (0 : 10) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + -at-point$ (1 : 16) + s$ (0 : 14) + $ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + rev$ (2 : 1) + v$ (2 : 3) + + +After adding character i: +root + i + on + -at-point$ (1 : 14) + s$ (0 : 11) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + -at-point$ (1 : 8) + s$ (0 : 5) + -completions$ (0 : 2) + n + -at-point$ (1 : 15) + s$ (0 : 12) + int$ (1 : 22) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + point$ (1 : 20) + com + int-completion-at-point$ (1 : 0) + pletion + -at-point$ (1 : 7) + s$ (0 : 4) + m + int-completion-at-point$ (1 : 2) + pletion + -at-point$ (1 : 9) + s$ (0 : 6) + p + oint$ (1 : 21) + letion + -at-point$ (1 : 10) + s$ (0 : 7) + revi$ (2 : 0) + letion + -at-point$ (1 : 11) + s$ (0 : 8) + e + vi$ (2 : 2) + tion + -at-point$ (1 : 12) + s$ (0 : 9) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + -at-point$ (1 : 13) + s$ (0 : 10) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + -at-point$ (1 : 16) + s$ (0 : 14) + $ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + revi$ (2 : 1) + vi$ (2 : 3) + + +After adding character o: +root + i + on + -at-point$ (1 : 14) + s$ (0 : 11) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + -at-point$ (1 : 8) + s$ (0 : 5) + -completions$ (0 : 2) + n + -at-point$ (1 : 15) + s$ (0 : 12) + int$ (1 : 22) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + point$ (1 : 20) + com + int-completion-at-point$ (1 : 0) + pletion + -at-point$ (1 : 7) + s$ (0 : 4) + m + int-completion-at-point$ (1 : 2) + pletion + -at-point$ (1 : 9) + s$ (0 : 6) + p + oint$ (1 : 21) + letion + -at-point$ (1 : 10) + s$ (0 : 7) + revio$ (2 : 0) + letion + -at-point$ (1 : 11) + s$ (0 : 8) + e + vio$ (2 : 2) + tion + -at-point$ (1 : 12) + s$ (0 : 9) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + -at-point$ (1 : 13) + s$ (0 : 10) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + -at-point$ (1 : 16) + s$ (0 : 14) + $ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + revio$ (2 : 1) + vio$ (2 : 3) + + +After adding character u: +root + i + o + u$ (2 : 4) + n + -at-point$ (1 : 14) + s$ (0 : 11) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + -at-point$ (1 : 8) + s$ (0 : 5) + -completions$ (0 : 2) + n + -at-point$ (1 : 15) + s$ (0 : 12) + int$ (1 : 22) + u$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + point$ (1 : 20) + com + int-completion-at-point$ (1 : 0) + pletion + -at-point$ (1 : 7) + s$ (0 : 4) + m + int-completion-at-point$ (1 : 2) + pletion + -at-point$ (1 : 9) + s$ (0 : 6) + p + oint$ (1 : 21) + letion + -at-point$ (1 : 10) + s$ (0 : 7) + reviou$ (2 : 0) + letion + -at-point$ (1 : 11) + s$ (0 : 8) + e + viou$ (2 : 2) + tion + -at-point$ (1 : 12) + s$ (0 : 9) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + -at-point$ (1 : 13) + s$ (0 : 10) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + -at-point$ (1 : 16) + s$ (0 : 14) + $ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + reviou$ (2 : 1) + viou$ (2 : 3) + u$ (2 : 6) + + +After adding character s: +root + i + o + us$ (2 : 4) + n + -at-point$ (1 : 14) + s$ (0 : 11) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + -at-point$ (1 : 8) + s$ (0 : 5) + -completions$ (0 : 2) + n + -at-point$ (1 : 15) + s$ (0 : 12) + int$ (1 : 22) + us$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + point$ (1 : 20) + com + int-completion-at-point$ (1 : 0) + pletion + -at-point$ (1 : 7) + s$ (0 : 4) + m + int-completion-at-point$ (1 : 2) + pletion + -at-point$ (1 : 9) + s$ (0 : 6) + p + oint$ (1 : 21) + letion + -at-point$ (1 : 10) + s$ (0 : 7) + revious$ (2 : 0) + letion + -at-point$ (1 : 11) + s$ (0 : 8) + e + vious$ (2 : 2) + tion + -at-point$ (1 : 12) + s$ (0 : 9) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + -at-point$ (1 : 13) + s$ (0 : 10) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + -at-point$ (1 : 16) + s$ (0 : 14) + $ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + revious$ (2 : 1) + vious$ (2 : 3) + us$ (2 : 6) + + +After adding character -: +root + i + o + us-$ (2 : 4) + n + -at-point$ (1 : 14) + s$ (0 : 11) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + -at-point$ (1 : 8) + s$ (0 : 5) + -completions$ (0 : 2) + n + -at-point$ (1 : 15) + s$ (0 : 12) + int$ (1 : 22) + us-$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + point$ (1 : 20) + com + int-completion-at-point$ (1 : 0) + pletion + -at-point$ (1 : 7) + s$ (0 : 4) + m + int-completion-at-point$ (1 : 2) + pletion + -at-point$ (1 : 9) + s$ (0 : 6) + p + oint$ (1 : 21) + letion + -at-point$ (1 : 10) + s$ (0 : 7) + revious-$ (2 : 0) + letion + -at-point$ (1 : 11) + s$ (0 : 8) + e + vious-$ (2 : 2) + tion + -at-point$ (1 : 12) + s$ (0 : 9) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + -at-point$ (1 : 13) + s$ (0 : 10) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + -at-point$ (1 : 16) + s + -$ (2 : 7) + $ (0 : 14) + $ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + revious-$ (2 : 1) + vious-$ (2 : 3) + us-$ (2 : 6) + + +After adding character c: +root + i + o + us-c$ (2 : 4) + n + -at-point$ (1 : 14) + s$ (0 : 11) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + -at-point$ (1 : 8) + s$ (0 : 5) + -completions$ (0 : 2) + n + -at-point$ (1 : 15) + s$ (0 : 12) + int$ (1 : 22) + us-c$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + point$ (1 : 20) + com + int-completion-at-point$ (1 : 0) + pletion + -at-point$ (1 : 7) + s$ (0 : 4) + m + int-completion-at-point$ (1 : 2) + pletion + -at-point$ (1 : 9) + s$ (0 : 6) + p + oint$ (1 : 21) + letion + -at-point$ (1 : 10) + s$ (0 : 7) + revious-c$ (2 : 0) + letion + -at-point$ (1 : 11) + s$ (0 : 8) + e + vious-c$ (2 : 2) + tion + -at-point$ (1 : 12) + s$ (0 : 9) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + -at-point$ (1 : 13) + s$ (0 : 10) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + -at-point$ (1 : 16) + s + -c$ (2 : 7) + $ (0 : 14) + $ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + revious-c$ (2 : 1) + vious-c$ (2 : 3) + us-c$ (2 : 6) + + +After adding character o: +root + i + o + us-co$ (2 : 4) + n + -at-point$ (1 : 14) + s$ (0 : 11) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + -at-point$ (1 : 8) + s$ (0 : 5) + -completions$ (0 : 2) + n + -at-point$ (1 : 15) + s$ (0 : 12) + int$ (1 : 22) + us-co$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + point$ (1 : 20) + com + int-completion-at-point$ (1 : 0) + pletion + -at-point$ (1 : 7) + s$ (0 : 4) + m + int-completion-at-point$ (1 : 2) + pletion + -at-point$ (1 : 9) + s$ (0 : 6) + p + oint$ (1 : 21) + letion + -at-point$ (1 : 10) + s$ (0 : 7) + revious-co$ (2 : 0) + letion + -at-point$ (1 : 11) + s$ (0 : 8) + e + vious-co$ (2 : 2) + tion + -at-point$ (1 : 12) + s$ (0 : 9) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + -at-point$ (1 : 13) + s$ (0 : 10) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + -at-point$ (1 : 16) + s + -co$ (2 : 7) + $ (0 : 14) + $ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + revious-co$ (2 : 1) + vious-co$ (2 : 3) + us-co$ (2 : 6) + + +After adding character m: +root + i + o + us-com$ (2 : 4) + n + -at-point$ (1 : 14) + s$ (0 : 11) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + -at-point$ (1 : 8) + s$ (0 : 5) + -completions$ (0 : 2) + n + -at-point$ (1 : 15) + s$ (0 : 12) + int$ (1 : 22) + us-com$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + point$ (1 : 20) + com + int-completion-at-point$ (1 : 0) + pletion + -at-point$ (1 : 7) + s$ (0 : 4) + m + int-completion-at-point$ (1 : 2) + pletion + -at-point$ (1 : 9) + s$ (0 : 6) + p + oint$ (1 : 21) + letion + -at-point$ (1 : 10) + s$ (0 : 7) + revious-com$ (2 : 0) + letion + -at-point$ (1 : 11) + s$ (0 : 8) + e + vious-com$ (2 : 2) + tion + -at-point$ (1 : 12) + s$ (0 : 9) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + -at-point$ (1 : 13) + s$ (0 : 10) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + -at-point$ (1 : 16) + s + -com$ (2 : 7) + $ (0 : 14) + $ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + revious-com$ (2 : 1) + vious-com$ (2 : 3) + us-com$ (2 : 6) + + +After adding character p: +root + i + o + us-comp$ (2 : 4) + n + -at-point$ (1 : 14) + s$ (0 : 11) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + -at-point$ (1 : 8) + s$ (0 : 5) + -completions$ (0 : 2) + n + -at-point$ (1 : 15) + s$ (0 : 12) + int$ (1 : 22) + us-comp$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + point$ (1 : 20) + com + int-completion-at-point$ (1 : 0) + pletion + -at-point$ (1 : 7) + s$ (0 : 4) + m + int-completion-at-point$ (1 : 2) + pletion + -at-point$ (1 : 9) + s$ (0 : 6) + p + oint$ (1 : 21) + letion + -at-point$ (1 : 10) + s$ (0 : 7) + revious-comp$ (2 : 0) + letion + -at-point$ (1 : 11) + s$ (0 : 8) + e + vious-comp$ (2 : 2) + tion + -at-point$ (1 : 12) + s$ (0 : 9) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + -at-point$ (1 : 13) + s$ (0 : 10) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + -at-point$ (1 : 16) + s + -comp$ (2 : 7) + $ (0 : 14) + $ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + revious-comp$ (2 : 1) + vious-comp$ (2 : 3) + us-comp$ (2 : 6) + + +After adding character l: +root + i + o + us-compl$ (2 : 4) + n + -at-point$ (1 : 14) + s$ (0 : 11) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + -at-point$ (1 : 8) + s$ (0 : 5) + -completions$ (0 : 2) + n + -at-point$ (1 : 15) + s$ (0 : 12) + int$ (1 : 22) + us-compl$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + point$ (1 : 20) + com + int-completion-at-point$ (1 : 0) + pletion + -at-point$ (1 : 7) + s$ (0 : 4) + m + int-completion-at-point$ (1 : 2) + pletion + -at-point$ (1 : 9) + s$ (0 : 6) + p + oint$ (1 : 21) + letion + -at-point$ (1 : 10) + s$ (0 : 7) + revious-compl$ (2 : 0) + letion + -at-point$ (1 : 11) + s$ (0 : 8) + e + vious-compl$ (2 : 2) + tion + -at-point$ (1 : 12) + s$ (0 : 9) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + -at-point$ (1 : 13) + s$ (0 : 10) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + -at-point$ (1 : 16) + s + -compl$ (2 : 7) + $ (0 : 14) + $ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + revious-compl$ (2 : 1) + vious-compl$ (2 : 3) + us-compl$ (2 : 6) + + +After adding character e: +root + i + o + us-comple$ (2 : 4) + n + -at-point$ (1 : 14) + s$ (0 : 11) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + -at-point$ (1 : 8) + s$ (0 : 5) + -completions$ (0 : 2) + n + -at-point$ (1 : 15) + s$ (0 : 12) + int$ (1 : 22) + us-comple$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + point$ (1 : 20) + com + int-completion-at-point$ (1 : 0) + pletion + -at-point$ (1 : 7) + s$ (0 : 4) + m + int-completion-at-point$ (1 : 2) + pletion + -at-point$ (1 : 9) + s$ (0 : 6) + p + oint$ (1 : 21) + letion + -at-point$ (1 : 10) + s$ (0 : 7) + revious-comple$ (2 : 0) + letion + -at-point$ (1 : 11) + s$ (0 : 8) + e + vious-comple$ (2 : 2) + tion + -at-point$ (1 : 12) + s$ (0 : 9) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + -at-point$ (1 : 13) + s$ (0 : 10) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + -at-point$ (1 : 16) + s + -comple$ (2 : 7) + $ (0 : 14) + $ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + revious-comple$ (2 : 1) + vious-comple$ (2 : 3) + us-comple$ (2 : 6) + + +After adding character t: +root + i + o + us-complet$ (2 : 4) + n + -at-point$ (1 : 14) + s$ (0 : 11) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + -at-point$ (1 : 8) + s$ (0 : 5) + -completions$ (0 : 2) + n + -at-point$ (1 : 15) + s$ (0 : 12) + int$ (1 : 22) + us-complet$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + point$ (1 : 20) + com + int-completion-at-point$ (1 : 0) + pletion + -at-point$ (1 : 7) + s$ (0 : 4) + m + int-completion-at-point$ (1 : 2) + pletion + -at-point$ (1 : 9) + s$ (0 : 6) + p + oint$ (1 : 21) + letion + -at-point$ (1 : 10) + s$ (0 : 7) + revious-complet$ (2 : 0) + letion + -at-point$ (1 : 11) + s$ (0 : 8) + e + vious-complet$ (2 : 2) + tion + -at-point$ (1 : 12) + s$ (0 : 9) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + -at-point$ (1 : 13) + s$ (0 : 10) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + -at-point$ (1 : 16) + s + -complet$ (2 : 7) + $ (0 : 14) + $ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + revious-complet$ (2 : 1) + vious-complet$ (2 : 3) + us-complet$ (2 : 6) + + +After adding character i: +root + i + o + us-completi$ (2 : 4) + n + -at-point$ (1 : 14) + s$ (0 : 11) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + -at-point$ (1 : 8) + s$ (0 : 5) + -completions$ (0 : 2) + n + -at-point$ (1 : 15) + s$ (0 : 12) + int$ (1 : 22) + us-completi$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + point$ (1 : 20) + com + int-completion-at-point$ (1 : 0) + pletion + -at-point$ (1 : 7) + s$ (0 : 4) + m + int-completion-at-point$ (1 : 2) + pletion + -at-point$ (1 : 9) + s$ (0 : 6) + p + oint$ (1 : 21) + letion + -at-point$ (1 : 10) + s$ (0 : 7) + revious-completi$ (2 : 0) + letion + -at-point$ (1 : 11) + s$ (0 : 8) + e + vious-completi$ (2 : 2) + tion + -at-point$ (1 : 12) + s$ (0 : 9) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + -at-point$ (1 : 13) + s$ (0 : 10) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + -at-point$ (1 : 16) + s + -completi$ (2 : 7) + $ (0 : 14) + $ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + revious-completi$ (2 : 1) + vious-completi$ (2 : 3) + us-completi$ (2 : 6) + + +After adding character o: +root + i + o + us-completio$ (2 : 4) + n + -at-point$ (1 : 14) + s$ (0 : 11) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + -at-point$ (1 : 8) + s$ (0 : 5) + -completions$ (0 : 2) + n + -at-point$ (1 : 15) + s$ (0 : 12) + int$ (1 : 22) + us-completio$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + point$ (1 : 20) + com + int-completion-at-point$ (1 : 0) + pletion + -at-point$ (1 : 7) + s$ (0 : 4) + m + int-completion-at-point$ (1 : 2) + pletion + -at-point$ (1 : 9) + s$ (0 : 6) + p + oint$ (1 : 21) + letion + -at-point$ (1 : 10) + s$ (0 : 7) + revious-completio$ (2 : 0) + letion + -at-point$ (1 : 11) + s$ (0 : 8) + e + vious-completio$ (2 : 2) + tion + -at-point$ (1 : 12) + s$ (0 : 9) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + -at-point$ (1 : 13) + s$ (0 : 10) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + -at-point$ (1 : 16) + s + -completio$ (2 : 7) + $ (0 : 14) + $ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + revious-completio$ (2 : 1) + vious-completio$ (2 : 3) + us-completio$ (2 : 6) + + +After adding character n: +root + i + o + us-completion$ (2 : 4) + n + -at-point$ (1 : 14) + s$ (0 : 11) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + -at-point$ (1 : 8) + s$ (0 : 5) + -completions$ (0 : 2) + n + -at-point$ (1 : 15) + s$ (0 : 12) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + point$ (1 : 20) + com + int-completion-at-point$ (1 : 0) + pletion + -at-point$ (1 : 7) + s$ (0 : 4) + m + int-completion-at-point$ (1 : 2) + pletion + -at-point$ (1 : 9) + s$ (0 : 6) + p + oint$ (1 : 21) + letion + -at-point$ (1 : 10) + s$ (0 : 7) + revious-completion$ (2 : 0) + letion + -at-point$ (1 : 11) + s$ (0 : 8) + e + vious-completion$ (2 : 2) + tion + -at-point$ (1 : 12) + s$ (0 : 9) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + -at-point$ (1 : 13) + s$ (0 : 10) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + -at-point$ (1 : 16) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + revious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + + +After adding character -1: +root + i + o + us-completion$ (2 : 4) + n + -at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + -at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + -at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + point$ (1 : 20) + com + int-completion-at-point$ (1 : 0) + pletion + -at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + -at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + p + oint$ (1 : 21) + letion + -at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + letion + -at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + -at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + -at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + -at-point$ (1 : 16) + $ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + revious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + + + + +After adding character c: +root + i + o + us-completion$ (2 : 4) + n + -at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + -at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + -at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + point$ (1 : 20) + com + int-completion-at-point$ (1 : 0) + pletion + -at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + -at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + p + oint$ (1 : 21) + letion + -at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + letion + -at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + -at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + -at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + -at-point$ (1 : 16) + $ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + revious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + + +After adding character o: +root + i + o + us-completion$ (2 : 4) + n + -at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + -at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + -at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + point$ (1 : 20) + com + int-completion-at-point$ (1 : 0) + pletion + -at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + -at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + p + oint$ (1 : 21) + letion + -at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + letion + -at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + -at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + -at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + -at-point$ (1 : 16) + $ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + revious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + + +After adding character m: +root + i + o + us-completion$ (2 : 4) + n + -at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + -at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + -at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + point$ (1 : 20) + com + int-completion-at-point$ (1 : 0) + pletion + -at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + -at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + p + oint$ (1 : 21) + letion + -at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + letion + -at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + -at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + -at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + -at-point$ (1 : 16) + $ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + revious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + + +After adding character p: +root + i + o + us-completion$ (2 : 4) + n + -at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + -at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + -at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + point$ (1 : 20) + com + int-completion-at-point$ (1 : 0) + pletion + -at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + -at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + p + oint$ (1 : 21) + letion + -at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + letion + -at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + -at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + -at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + -at-point$ (1 : 16) + $ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + revious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + + +After adding character l: +root + i + o + us-completion$ (2 : 4) + n + -at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + -at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + -at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + point$ (1 : 20) + com + int-completion-at-point$ (1 : 0) + pletion + -at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + -at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + p + oint$ (1 : 21) + letion + -at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + letion + -at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + -at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + -at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + -at-point$ (1 : 16) + $ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + revious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + + +After adding character e: +root + i + o + us-completion$ (2 : 4) + n + -at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + -at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + -at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + point$ (1 : 20) + com + int-completion-at-point$ (1 : 0) + pletion + -at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + -at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + p + oint$ (1 : 21) + letion + -at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + letion + -at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + -at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + -at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + -at-point$ (1 : 16) + $ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + revious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + + +After adding character t: +root + i + o + us-completion$ (2 : 4) + n + -at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + -at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + -at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + point$ (1 : 20) + com + int-completion-at-point$ (1 : 0) + pletion + -at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + -at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + p + oint$ (1 : 21) + letion + -at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + letion + -at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + -at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + -at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + -at-point$ (1 : 16) + $ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + revious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + + +After adding character i: +root + i + o + us-completion$ (2 : 4) + n + -at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + -at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + -at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + point$ (1 : 20) + com + int-completion-at-point$ (1 : 0) + pletion + -at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + -at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + p + oint$ (1 : 21) + letion + -at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + letion + -at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + -at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + -at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + -at-point$ (1 : 16) + $ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + revious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + + +After adding character o: +root + i + o + us-completion$ (2 : 4) + n + -at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + -at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + -at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + point$ (1 : 20) + com + int-completion-at-point$ (1 : 0) + pletion + -at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + -at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + p + oint$ (1 : 21) + letion + -at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + letion + -at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + -at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + -at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + -at-point$ (1 : 16) + $ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + revious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + + +After adding character n: +root + i + o + us-completion$ (2 : 4) + n + -at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + -at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + -at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + point$ (1 : 20) + com + int-completion-at-point$ (1 : 0) + pletion + -at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + -at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + p + oint$ (1 : 21) + letion + -at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + letion + -at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + -at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + -at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + -at-point$ (1 : 16) + $ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + revious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + + +After adding character -: +root + i + o + us-completion$ (2 : 4) + n + -at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + -at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + -at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + point$ (1 : 20) + com + int-completion-at-point$ (1 : 0) + pletion + -at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + -at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + p + oint$ (1 : 21) + letion + -at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + letion + -at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + -at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + -at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + -at-point$ (1 : 16) + $ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + revious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + + +After adding character f: +root + i + o + us-completion$ (2 : 4) + n + - + f$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + f$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + f$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + point$ (1 : 20) + f$ (3 : 10) + com + int-completion-at-point$ (1 : 0) + pletion + - + f$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + f$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + p + oint$ (1 : 21) + letion + - + f$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + letion + - + f$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + f$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + f$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + f$ (3 : 9) + at-point$ (1 : 16) + $ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + revious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + f$ (3 : 11) + + +After adding character l: +root + i + o + us-completion$ (2 : 4) + n + - + fl$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + fl$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + fl$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + point$ (1 : 20) + fl$ (3 : 10) + com + int-completion-at-point$ (1 : 0) + pletion + - + fl$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + fl$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + p + oint$ (1 : 21) + letion + - + fl$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + letion + - + fl$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + fl$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + fl$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + fl$ (3 : 9) + at-point$ (1 : 16) + $ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + revious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + fl$ (3 : 11) + + +After adding character e: +root + i + o + us-completion$ (2 : 4) + n + - + fle$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + fle$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + fle$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + point$ (1 : 20) + fle$ (3 : 10) + com + int-completion-at-point$ (1 : 0) + pletion + - + fle$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + fle$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + p + oint$ (1 : 21) + letion + - + fle$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + letion + - + fle$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + fle$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + fle$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + fle$ (3 : 9) + at-point$ (1 : 16) + $ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + revious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + fle$ (3 : 11) + + +After adding character x: +root + i + o + us-completion$ (2 : 4) + n + - + flex$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + flex$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + point$ (1 : 20) + flex$ (3 : 10) + com + int-completion-at-point$ (1 : 0) + pletion + - + flex$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + p + oint$ (1 : 21) + letion + - + flex$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + le + x$ (3 : 12) + tion + - + flex$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x$ (3 : 13) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex$ (3 : 9) + at-point$ (1 : 16) + $ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + revious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex$ (3 : 11) + x$ (3 : 14) + + +After adding character -: +root + i + o + us-completion$ (2 : 4) + n + - + flex-$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex-$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + flex-$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + point$ (1 : 20) + flex-$ (3 : 10) + com + int-completion-at-point$ (1 : 0) + pletion + - + flex-$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex-$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + p + oint$ (1 : 21) + letion + - + flex-$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + le + x-$ (3 : 12) + tion + - + flex-$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex-$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x-$ (3 : 13) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex-$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex-$ (3 : 9) + at-point$ (1 : 16) + $ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + revious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex-$ (3 : 11) + x-$ (3 : 14) + + +After adding character -: +root + i + o + us-completion$ (2 : 4) + n + - + flex--$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + flex--$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + point$ (1 : 20) + flex--$ (3 : 10) + -$ (3 : 15) + com + int-completion-at-point$ (1 : 0) + pletion + - + flex--$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + p + oint$ (1 : 21) + letion + - + flex--$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + le + x--$ (3 : 12) + tion + - + flex--$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x--$ (3 : 13) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--$ (3 : 9) + at-point$ (1 : 16) + $ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + revious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex--$ (3 : 11) + x--$ (3 : 14) + + +After adding character m: +root + i + o + us-completion$ (2 : 4) + n + - + flex--m$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--m$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + flex--m$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + point$ (1 : 20) + flex--m$ (3 : 10) + -m$ (3 : 15) + m$ (3 : 16) + com + int-completion-at-point$ (1 : 0) + pletion + - + flex--m$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--m$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + p + oint$ (1 : 21) + letion + - + flex--m$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + le + x--m$ (3 : 12) + tion + - + flex--m$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--m$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x--m$ (3 : 13) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--m$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--m$ (3 : 9) + at-point$ (1 : 16) + $ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + revious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex--m$ (3 : 11) + x--m$ (3 : 14) + + +After adding character a: +root + i + o + us-completion$ (2 : 4) + n + - + flex--ma$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--ma$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + flex--ma$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + point$ (1 : 20) + flex--ma$ (3 : 10) + -ma$ (3 : 15) + ma$ (3 : 16) + com + int-completion-at-point$ (1 : 0) + pletion + - + flex--ma$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--ma$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + a$ (3 : 17) + p + oint$ (1 : 21) + letion + - + flex--ma$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + le + x--ma$ (3 : 12) + tion + - + flex--ma$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--ma$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x--ma$ (3 : 13) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--ma$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--ma$ (3 : 9) + at-point$ (1 : 16) + $ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + at-point$ (1 : 18) + revious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex--ma$ (3 : 11) + x--ma$ (3 : 14) + + +After adding character k: +root + i + o + us-completion$ (2 : 4) + n + - + flex--mak$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--mak$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + flex--mak$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + point$ (1 : 20) + flex--mak$ (3 : 10) + -mak$ (3 : 15) + mak$ (3 : 16) + com + int-completion-at-point$ (1 : 0) + pletion + - + flex--mak$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--mak$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + ak$ (3 : 17) + p + oint$ (1 : 21) + letion + - + flex--mak$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + le + x--mak$ (3 : 12) + tion + - + flex--mak$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--mak$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x--mak$ (3 : 13) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--mak$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--mak$ (3 : 9) + at-point$ (1 : 16) + $ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + k$ (3 : 18) + t-point$ (1 : 18) + revious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex--mak$ (3 : 11) + x--mak$ (3 : 14) + k$ (3 : 19) + + +After adding character e: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + flex--make$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + point$ (1 : 20) + flex--make$ (3 : 10) + -make$ (3 : 15) + make$ (3 : 16) + com + int-completion-at-point$ (1 : 0) + pletion + - + flex--make$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + ake$ (3 : 17) + p + oint$ (1 : 21) + letion + - + flex--make$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + le + x--make$ (3 : 12) + tion + - + flex--make$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x--make$ (3 : 13) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make$ (3 : 9) + at-point$ (1 : 16) + $ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke$ (3 : 18) + t-point$ (1 : 18) + revious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex--make$ (3 : 11) + x--make$ (3 : 14) + ke$ (3 : 19) + + +After adding character -: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + flex--make-$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + point$ (1 : 20) + flex--make-$ (3 : 10) + -make-$ (3 : 15) + make-$ (3 : 16) + com + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + ake-$ (3 : 17) + p + oint$ (1 : 21) + letion + - + flex--make-$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + le + x--make-$ (3 : 12) + tion + - + flex--make-$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x--make-$ (3 : 13) + -$ (3 : 20) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-$ (3 : 9) + at-point$ (1 : 16) + $ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-$ (3 : 18) + t-point$ (1 : 18) + revious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex--make-$ (3 : 11) + x--make-$ (3 : 14) + ke-$ (3 : 19) + + +After adding character f: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-f$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-f$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + flex--make-f$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + point$ (1 : 20) + flex--make-f$ (3 : 10) + -make-f$ (3 : 15) + make-f$ (3 : 16) + com + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-f$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-f$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + ake-f$ (3 : 17) + p + oint$ (1 : 21) + letion + - + flex--make-f$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + le + x--make-f$ (3 : 12) + tion + - + flex--make-f$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-f$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x--make-f$ (3 : 13) + -f$ (3 : 20) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-f$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-f$ (3 : 9) + at-point$ (1 : 16) + $ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-f$ (3 : 18) + t-point$ (1 : 18) + revious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex--make-f$ (3 : 11) + x--make-f$ (3 : 14) + ke-f$ (3 : 19) + + +After adding character l: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-fl$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-fl$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + flex--make-fl$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + point$ (1 : 20) + flex--make-fl$ (3 : 10) + -make-fl$ (3 : 15) + make-fl$ (3 : 16) + com + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-fl$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-fl$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + ake-fl$ (3 : 17) + p + oint$ (1 : 21) + letion + - + flex--make-fl$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + le + x--make-fl$ (3 : 12) + tion + - + flex--make-fl$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-fl$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x--make-fl$ (3 : 13) + -fl$ (3 : 20) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-fl$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-fl$ (3 : 9) + at-point$ (1 : 16) + $ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-fl$ (3 : 18) + t-point$ (1 : 18) + revious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex--make-fl$ (3 : 11) + x--make-fl$ (3 : 14) + ke-fl$ (3 : 19) + + +After adding character e: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-fle$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-fle$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + flex--make-fle$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + point$ (1 : 20) + flex--make-fle$ (3 : 10) + -make-fle$ (3 : 15) + make-fle$ (3 : 16) + com + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-fle$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-fle$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + ake-fle$ (3 : 17) + p + oint$ (1 : 21) + letion + - + flex--make-fle$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + le + x--make-fle$ (3 : 12) + tion + - + flex--make-fle$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-fle$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x--make-fle$ (3 : 13) + -fle$ (3 : 20) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-fle$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-fle$ (3 : 9) + at-point$ (1 : 16) + $ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-fle$ (3 : 18) + t-point$ (1 : 18) + revious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex--make-fle$ (3 : 11) + x--make-fle$ (3 : 14) + ke-fle$ (3 : 19) + + +After adding character x: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + flex--make-flex$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + point$ (1 : 20) + flex--make-flex$ (3 : 10) + -make-flex$ (3 : 15) + make-flex$ (3 : 16) + com + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + ake-flex$ (3 : 17) + p + oint$ (1 : 21) + letion + - + flex--make-flex$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + le + x--make-flex$ (3 : 12) + tion + - + flex--make-flex$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x--make-flex$ (3 : 13) + -flex$ (3 : 20) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex$ (3 : 9) + at-point$ (1 : 16) + $ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex$ (3 : 18) + t-point$ (1 : 18) + revious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex--make-flex$ (3 : 11) + x--make-flex$ (3 : 14) + ke-flex$ (3 : 19) + + +After adding character -: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + flex--make-flex-$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + point$ (1 : 20) + flex--make-flex-$ (3 : 10) + -make-flex-$ (3 : 15) + make-flex-$ (3 : 16) + com + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + ake-flex-$ (3 : 17) + p + oint$ (1 : 21) + letion + - + flex--make-flex-$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + le + x--make-flex-$ (3 : 12) + tion + - + flex--make-flex-$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x--make-flex-$ (3 : 13) + -flex-$ (3 : 20) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-$ (3 : 9) + at-point$ (1 : 16) + $ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-$ (3 : 18) + t-point$ (1 : 18) + revious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex--make-flex-$ (3 : 11) + x--make-flex-$ (3 : 14) + ke-flex-$ (3 : 19) + + +After adding character p: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-p$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-p$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + flex--make-flex-p$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + point$ (1 : 20) + flex- + p$ (3 : 21) + -make-flex-p$ (3 : 10) + -make-flex-p$ (3 : 15) + make-flex-p$ (3 : 16) + com + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-p$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-p$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + ake-flex-p$ (3 : 17) + p + oint$ (1 : 21) + letion + - + flex--make-flex-p$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + le + x- + p$ (3 : 23) + -make-flex-p$ (3 : 12) + tion + - + flex--make-flex-p$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-p$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + p$ (3 : 24) + -make-flex-p$ (3 : 13) + -flex-p$ (3 : 20) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-p$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-p$ (3 : 9) + at-point$ (1 : 16) + $ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-p$ (3 : 18) + t-point$ (1 : 18) + revious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + p$ (3 : 22) + -make-flex-p$ (3 : 11) + x- + p$ (3 : 25) + -make-flex-p$ (3 : 14) + ke-flex-p$ (3 : 19) + + +After adding character a: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-pa$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-pa$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + flex--make-flex-pa$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + a$ (3 : 26) + oint$ (1 : 20) + flex- + pa$ (3 : 21) + -make-flex-pa$ (3 : 10) + -make-flex-pa$ (3 : 15) + make-flex-pa$ (3 : 16) + com + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-pa$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-pa$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + ake-flex-pa$ (3 : 17) + p + oint$ (1 : 21) + letion + - + flex--make-flex-pa$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + a$ (3 : 27) + le + x- + pa$ (3 : 23) + -make-flex-pa$ (3 : 12) + tion + - + flex--make-flex-pa$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-pa$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + pa$ (3 : 24) + -make-flex-pa$ (3 : 13) + -flex-pa$ (3 : 20) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-pa$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-pa$ (3 : 9) + at-point$ (1 : 16) + $ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-pa$ (3 : 18) + t-point$ (1 : 18) + revious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + pa$ (3 : 22) + -make-flex-pa$ (3 : 11) + x- + pa$ (3 : 25) + -make-flex-pa$ (3 : 14) + ke-flex-pa$ (3 : 19) + + +After adding character t: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-pat$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-pat$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + flex--make-flex-pat$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + at$ (3 : 26) + oint$ (1 : 20) + flex- + pat$ (3 : 21) + -make-flex-pat$ (3 : 10) + -make-flex-pat$ (3 : 15) + make-flex-pat$ (3 : 16) + com + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-pat$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-pat$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + ake-flex-pat$ (3 : 17) + p + oint$ (1 : 21) + letion + - + flex--make-flex-pat$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + at$ (3 : 27) + le + x- + pat$ (3 : 23) + -make-flex-pat$ (3 : 12) + tion + - + flex--make-flex-pat$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-pat$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + pat$ (3 : 24) + -make-flex-pat$ (3 : 13) + -flex-pat$ (3 : 20) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-pat$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-pat$ (3 : 9) + at-point$ (1 : 16) + $ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-pat$ (3 : 18) + t-point$ (1 : 18) + revious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + pat$ (3 : 22) + -make-flex-pat$ (3 : 11) + x- + pat$ (3 : 25) + -make-flex-pat$ (3 : 14) + ke-flex-pat$ (3 : 19) + + +After adding character t: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-patt$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-patt$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + flex--make-flex-patt$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + att$ (3 : 26) + oint$ (1 : 20) + flex- + patt$ (3 : 21) + -make-flex-patt$ (3 : 10) + -make-flex-patt$ (3 : 15) + make-flex-patt$ (3 : 16) + com + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-patt$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-patt$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + ake-flex-patt$ (3 : 17) + p + oint$ (1 : 21) + letion + - + flex--make-flex-patt$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + att$ (3 : 27) + le + x- + patt$ (3 : 23) + -make-flex-patt$ (3 : 12) + tion + - + flex--make-flex-patt$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-patt$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + patt$ (3 : 24) + -make-flex-patt$ (3 : 13) + -flex-patt$ (3 : 20) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-patt$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + t$ (3 : 29) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-patt$ (3 : 9) + at-point$ (1 : 16) + $ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-patt$ (3 : 18) + t + t$ (3 : 28) + -point$ (1 : 18) + revious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + patt$ (3 : 22) + -make-flex-patt$ (3 : 11) + x- + patt$ (3 : 25) + -make-flex-patt$ (3 : 14) + ke-flex-patt$ (3 : 19) + + +After adding character e: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-patte$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-patte$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + flex--make-flex-patte$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + atte$ (3 : 26) + oint$ (1 : 20) + flex- + patte$ (3 : 21) + -make-flex-patte$ (3 : 10) + -make-flex-patte$ (3 : 15) + make-flex-patte$ (3 : 16) + com + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-patte$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-patte$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + ake-flex-patte$ (3 : 17) + p + oint$ (1 : 21) + letion + - + flex--make-flex-patte$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + atte$ (3 : 27) + le + x- + patte$ (3 : 23) + -make-flex-patte$ (3 : 12) + tion + - + flex--make-flex-patte$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-patte$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + patte$ (3 : 24) + -make-flex-patte$ (3 : 13) + -flex-patte$ (3 : 20) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-patte$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + te$ (3 : 29) + e$ (3 : 30) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-patte$ (3 : 9) + at-point$ (1 : 16) + $ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-patte$ (3 : 18) + t + te$ (3 : 28) + -point$ (1 : 18) + revious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + patte$ (3 : 22) + -make-flex-patte$ (3 : 11) + x- + patte$ (3 : 25) + -make-flex-patte$ (3 : 14) + ke-flex-patte$ (3 : 19) + + +After adding character r: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-patter$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-patter$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + flex--make-flex-patter$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + atter$ (3 : 26) + oint$ (1 : 20) + flex- + patter$ (3 : 21) + -make-flex-patter$ (3 : 10) + -make-flex-patter$ (3 : 15) + make-flex-patter$ (3 : 16) + com + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-patter$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-patter$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + ake-flex-patter$ (3 : 17) + p + oint$ (1 : 21) + letion + - + flex--make-flex-patter$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + atter$ (3 : 27) + le + x- + patter$ (3 : 23) + -make-flex-patter$ (3 : 12) + tion + - + flex--make-flex-patter$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-patter$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + patter$ (3 : 24) + -make-flex-patter$ (3 : 13) + -flex-patter$ (3 : 20) + r$ (3 : 31) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-patter$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + ter$ (3 : 29) + er$ (3 : 30) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-patter$ (3 : 9) + at-point$ (1 : 16) + $ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-patter$ (3 : 18) + t + ter$ (3 : 28) + -point$ (1 : 18) + revious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + patter$ (3 : 22) + -make-flex-patter$ (3 : 11) + x- + patter$ (3 : 25) + -make-flex-patter$ (3 : 14) + ke-flex-patter$ (3 : 19) + + +After adding character n: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-pattern$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-pattern$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + flex--make-flex-pattern$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + attern$ (3 : 26) + oint$ (1 : 20) + flex- + pattern$ (3 : 21) + -make-flex-pattern$ (3 : 10) + -make-flex-pattern$ (3 : 15) + make-flex-pattern$ (3 : 16) + com + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-pattern$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-pattern$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + ake-flex-pattern$ (3 : 17) + p + oint$ (1 : 21) + letion + - + flex--make-flex-pattern$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + attern$ (3 : 27) + le + x- + pattern$ (3 : 23) + -make-flex-pattern$ (3 : 12) + tion + - + flex--make-flex-pattern$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-pattern$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + pattern$ (3 : 24) + -make-flex-pattern$ (3 : 13) + -flex-pattern$ (3 : 20) + rn$ (3 : 31) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-pattern$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + tern$ (3 : 29) + ern$ (3 : 30) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-pattern$ (3 : 9) + at-point$ (1 : 16) + $ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-pattern$ (3 : 18) + t + tern$ (3 : 28) + -point$ (1 : 18) + r + n$ (3 : 32) + evious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + pattern$ (3 : 22) + -make-flex-pattern$ (3 : 11) + x- + pattern$ (3 : 25) + -make-flex-pattern$ (3 : 14) + ke-flex-pattern$ (3 : 19) + + +After adding character -1: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-pattern$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-pattern$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + flex--make-flex-pattern$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + attern$ (3 : 26) + oint$ (1 : 20) + flex- + pattern$ (3 : 21) + -make-flex-pattern$ (3 : 10) + -make-flex-pattern$ (3 : 15) + make-flex-pattern$ (3 : 16) + com + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-pattern$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-pattern$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + ake-flex-pattern$ (3 : 17) + p + oint$ (1 : 21) + letion + - + flex--make-flex-pattern$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + attern$ (3 : 27) + le + x- + pattern$ (3 : 23) + -make-flex-pattern$ (3 : 12) + tion + - + flex--make-flex-pattern$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-pattern$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + pattern$ (3 : 24) + -make-flex-pattern$ (3 : 13) + -flex-pattern$ (3 : 20) + rn$ (3 : 31) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-pattern$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + tern$ (3 : 29) + ern$ (3 : 30) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-pattern$ (3 : 9) + at-point$ (1 : 16) + $ (3 : 33)$ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-pattern$ (3 : 18) + t + tern$ (3 : 28) + -point$ (1 : 18) + r + n$ (3 : 32) + evious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + pattern$ (3 : 22) + -make-flex-pattern$ (3 : 11) + x- + pattern$ (3 : 25) + -make-flex-pattern$ (3 : 14) + ke-flex-pattern$ (3 : 19) + + + + +After adding character e: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-pattern$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-pattern$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + flex--make-flex-pattern$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + attern$ (3 : 26) + oint$ (1 : 20) + flex- + pattern$ (3 : 21) + -make-flex-pattern$ (3 : 10) + -make-flex-pattern$ (3 : 15) + make-flex-pattern$ (3 : 16) + com + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-pattern$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-pattern$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + ake-flex-pattern$ (3 : 17) + p + oint$ (1 : 21) + letion + - + flex--make-flex-pattern$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + attern$ (3 : 27) + le + x- + pattern$ (3 : 23) + -make-flex-pattern$ (3 : 12) + tion + - + flex--make-flex-pattern$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-pattern$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + pattern$ (3 : 24) + -make-flex-pattern$ (3 : 13) + -flex-pattern$ (3 : 20) + rn$ (3 : 31) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-pattern$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + tern$ (3 : 29) + ern$ (3 : 30) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-pattern$ (3 : 9) + at-point$ (1 : 16) + $ (3 : 33)$ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-pattern$ (3 : 18) + t + tern$ (3 : 28) + -point$ (1 : 18) + r + n$ (3 : 32) + evious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + pattern$ (3 : 22) + -make-flex-pattern$ (3 : 11) + x- + pattern$ (3 : 25) + -make-flex-pattern$ (3 : 14) + ke-flex-pattern$ (3 : 19) + + +After adding character l: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-pattern$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-pattern$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + flex--make-flex-pattern$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + attern$ (3 : 26) + oint$ (1 : 20) + flex- + pattern$ (3 : 21) + -make-flex-pattern$ (3 : 10) + -make-flex-pattern$ (3 : 15) + make-flex-pattern$ (3 : 16) + com + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-pattern$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-pattern$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + ake-flex-pattern$ (3 : 17) + p + oint$ (1 : 21) + letion + - + flex--make-flex-pattern$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + attern$ (3 : 27) + le + x- + pattern$ (3 : 23) + -make-flex-pattern$ (3 : 12) + tion + - + flex--make-flex-pattern$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-pattern$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + pattern$ (3 : 24) + -make-flex-pattern$ (3 : 13) + -flex-pattern$ (3 : 20) + rn$ (3 : 31) + l$ (4 : 0) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-pattern$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + tern$ (3 : 29) + ern$ (3 : 30) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-pattern$ (3 : 9) + at-point$ (1 : 16) + $ (3 : 33)$ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-pattern$ (3 : 18) + t + tern$ (3 : 28) + -point$ (1 : 18) + r + n$ (3 : 32) + evious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + pattern$ (3 : 22) + -make-flex-pattern$ (3 : 11) + x- + pattern$ (3 : 25) + -make-flex-pattern$ (3 : 14) + ke-flex-pattern$ (3 : 19) + + +After adding character d: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-pattern$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-pattern$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + flex--make-flex-pattern$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + attern$ (3 : 26) + oint$ (1 : 20) + flex- + pattern$ (3 : 21) + -make-flex-pattern$ (3 : 10) + -make-flex-pattern$ (3 : 15) + make-flex-pattern$ (3 : 16) + com + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-pattern$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-pattern$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + ake-flex-pattern$ (3 : 17) + p + oint$ (1 : 21) + letion + - + flex--make-flex-pattern$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + attern$ (3 : 27) + l + d$ (4 : 1) + e + x- + pattern$ (3 : 23) + -make-flex-pattern$ (3 : 12) + tion + - + flex--make-flex-pattern$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-pattern$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + pattern$ (3 : 24) + -make-flex-pattern$ (3 : 13) + -flex-pattern$ (3 : 20) + rn$ (3 : 31) + ld$ (4 : 0) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-pattern$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + tern$ (3 : 29) + ern$ (3 : 30) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-pattern$ (3 : 9) + at-point$ (1 : 16) + $ (3 : 33)$ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-pattern$ (3 : 18) + t + tern$ (3 : 28) + -point$ (1 : 18) + r + n$ (3 : 32) + evious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + pattern$ (3 : 22) + -make-flex-pattern$ (3 : 11) + x- + pattern$ (3 : 25) + -make-flex-pattern$ (3 : 14) + ke-flex-pattern$ (3 : 19) + + +After adding character o: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-pattern$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do-completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-pattern$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + flex--make-flex-pattern$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + attern$ (3 : 26) + oint$ (1 : 20) + flex- + pattern$ (3 : 21) + -make-flex-pattern$ (3 : 10) + -make-flex-pattern$ (3 : 15) + make-flex-pattern$ (3 : 16) + com + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-pattern$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-pattern$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + ake-flex-pattern$ (3 : 17) + p + oint$ (1 : 21) + letion + - + flex--make-flex-pattern$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + attern$ (3 : 27) + l + do$ (4 : 1) + e + x- + pattern$ (3 : 23) + -make-flex-pattern$ (3 : 12) + tion + - + flex--make-flex-pattern$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-pattern$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + pattern$ (3 : 24) + -make-flex-pattern$ (3 : 13) + -flex-pattern$ (3 : 20) + rn$ (3 : 31) + ldo$ (4 : 0) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-pattern$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + tern$ (3 : 29) + ern$ (3 : 30) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-pattern$ (3 : 9) + at-point$ (1 : 16) + $ (3 : 33)$ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-pattern$ (3 : 18) + t + tern$ (3 : 28) + -point$ (1 : 18) + r + n$ (3 : 32) + evious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + pattern$ (3 : 22) + -make-flex-pattern$ (3 : 11) + x- + pattern$ (3 : 25) + -make-flex-pattern$ (3 : 14) + ke-flex-pattern$ (3 : 19) + + +After adding character c: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-pattern$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do + c$ (4 : 2) + -completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-pattern$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + flex--make-flex-pattern$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + c$ (4 : 3) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + attern$ (3 : 26) + oint$ (1 : 20) + flex- + pattern$ (3 : 21) + -make-flex-pattern$ (3 : 10) + -make-flex-pattern$ (3 : 15) + make-flex-pattern$ (3 : 16) + com + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-pattern$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-pattern$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + ake-flex-pattern$ (3 : 17) + p + oint$ (1 : 21) + letion + - + flex--make-flex-pattern$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + attern$ (3 : 27) + l + doc$ (4 : 1) + e + x- + pattern$ (3 : 23) + -make-flex-pattern$ (3 : 12) + tion + - + flex--make-flex-pattern$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-pattern$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + pattern$ (3 : 24) + -make-flex-pattern$ (3 : 13) + -flex-pattern$ (3 : 20) + rn$ (3 : 31) + ldoc$ (4 : 0) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-pattern$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + tern$ (3 : 29) + ern$ (3 : 30) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-pattern$ (3 : 9) + at-point$ (1 : 16) + $ (3 : 33)$ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-pattern$ (3 : 18) + t + tern$ (3 : 28) + -point$ (1 : 18) + r + n$ (3 : 32) + evious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + pattern$ (3 : 22) + -make-flex-pattern$ (3 : 11) + x- + pattern$ (3 : 25) + -make-flex-pattern$ (3 : 14) + ke-flex-pattern$ (3 : 19) + + +After adding character -: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-pattern$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do + c-$ (4 : 2) + -completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-pattern$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + flex--make-flex-pattern$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + c-$ (4 : 3) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + attern$ (3 : 26) + oint$ (1 : 20) + flex- + pattern$ (3 : 21) + -make-flex-pattern$ (3 : 10) + -make-flex-pattern$ (3 : 15) + make-flex-pattern$ (3 : 16) + c + -$ (4 : 4) + om + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-pattern$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-pattern$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + ake-flex-pattern$ (3 : 17) + p + oint$ (1 : 21) + letion + - + flex--make-flex-pattern$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + attern$ (3 : 27) + l + doc-$ (4 : 1) + e + x- + pattern$ (3 : 23) + -make-flex-pattern$ (3 : 12) + tion + - + flex--make-flex-pattern$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-pattern$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + pattern$ (3 : 24) + -make-flex-pattern$ (3 : 13) + -flex-pattern$ (3 : 20) + rn$ (3 : 31) + ldoc-$ (4 : 0) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-pattern$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + tern$ (3 : 29) + ern$ (3 : 30) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-pattern$ (3 : 9) + at-point$ (1 : 16) + $ (3 : 33)$ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-pattern$ (3 : 18) + t + tern$ (3 : 28) + -point$ (1 : 18) + r + n$ (3 : 32) + evious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + pattern$ (3 : 22) + -make-flex-pattern$ (3 : 11) + x- + pattern$ (3 : 25) + -make-flex-pattern$ (3 : 14) + ke-flex-pattern$ (3 : 19) + + +After adding character r: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-pattern$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do + c-r$ (4 : 2) + -completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-pattern$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + flex--make-flex-pattern$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + c-r$ (4 : 3) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + attern$ (3 : 26) + oint$ (1 : 20) + flex- + pattern$ (3 : 21) + -make-flex-pattern$ (3 : 10) + -make-flex-pattern$ (3 : 15) + make-flex-pattern$ (3 : 16) + r$ (4 : 5) + c + -r$ (4 : 4) + om + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-pattern$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-pattern$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + ake-flex-pattern$ (3 : 17) + p + oint$ (1 : 21) + letion + - + flex--make-flex-pattern$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + attern$ (3 : 27) + l + doc-r$ (4 : 1) + e + x- + pattern$ (3 : 23) + -make-flex-pattern$ (3 : 12) + tion + - + flex--make-flex-pattern$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-pattern$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + pattern$ (3 : 24) + -make-flex-pattern$ (3 : 13) + -flex-pattern$ (3 : 20) + rn$ (3 : 31) + ldoc-r$ (4 : 0) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-pattern$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + tern$ (3 : 29) + ern$ (3 : 30) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-pattern$ (3 : 9) + at-point$ (1 : 16) + $ (3 : 33)$ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-pattern$ (3 : 18) + t + tern$ (3 : 28) + -point$ (1 : 18) + r + n$ (3 : 32) + evious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + pattern$ (3 : 22) + -make-flex-pattern$ (3 : 11) + x- + pattern$ (3 : 25) + -make-flex-pattern$ (3 : 14) + ke-flex-pattern$ (3 : 19) + + +After adding character e: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-pattern$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do + c-re$ (4 : 2) + -completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-pattern$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + flex--make-flex-pattern$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + c-re$ (4 : 3) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + attern$ (3 : 26) + oint$ (1 : 20) + flex- + pattern$ (3 : 21) + -make-flex-pattern$ (3 : 10) + -make-flex-pattern$ (3 : 15) + make-flex-pattern$ (3 : 16) + re$ (4 : 5) + c + -re$ (4 : 4) + om + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-pattern$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-pattern$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + ake-flex-pattern$ (3 : 17) + p + oint$ (1 : 21) + letion + - + flex--make-flex-pattern$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + attern$ (3 : 27) + l + doc-re$ (4 : 1) + e + x- + pattern$ (3 : 23) + -make-flex-pattern$ (3 : 12) + tion + - + flex--make-flex-pattern$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-pattern$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + pattern$ (3 : 24) + -make-flex-pattern$ (3 : 13) + -flex-pattern$ (3 : 20) + rn$ (3 : 31) + ldoc-re$ (4 : 0) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-pattern$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + tern$ (3 : 29) + ern$ (3 : 30) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-pattern$ (3 : 9) + at-point$ (1 : 16) + $ (3 : 33)$ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-pattern$ (3 : 18) + t + tern$ (3 : 28) + -point$ (1 : 18) + r + n$ (3 : 32) + evious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + pattern$ (3 : 22) + -make-flex-pattern$ (3 : 11) + x- + pattern$ (3 : 25) + -make-flex-pattern$ (3 : 14) + ke-flex-pattern$ (3 : 19) + + +After adding character m: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-pattern$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do + c-rem$ (4 : 2) + -completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-pattern$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + flex--make-flex-pattern$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + c-rem$ (4 : 3) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + attern$ (3 : 26) + oint$ (1 : 20) + flex- + pattern$ (3 : 21) + -make-flex-pattern$ (3 : 10) + -make-flex-pattern$ (3 : 15) + make-flex-pattern$ (3 : 16) + rem$ (4 : 5) + c + -rem$ (4 : 4) + om + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-pattern$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-pattern$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + ake-flex-pattern$ (3 : 17) + p + oint$ (1 : 21) + letion + - + flex--make-flex-pattern$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + attern$ (3 : 27) + l + doc-rem$ (4 : 1) + e + x- + pattern$ (3 : 23) + -make-flex-pattern$ (3 : 12) + tion + - + flex--make-flex-pattern$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-pattern$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + pattern$ (3 : 24) + -make-flex-pattern$ (3 : 13) + -flex-pattern$ (3 : 20) + rn$ (3 : 31) + ldoc-rem$ (4 : 0) + m$ (4 : 7) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-pattern$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + tern$ (3 : 29) + ern$ (3 : 30) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-pattern$ (3 : 9) + at-point$ (1 : 16) + $ (3 : 33)$ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-pattern$ (3 : 18) + t + tern$ (3 : 28) + -point$ (1 : 18) + r + n$ (3 : 32) + e + m$ (4 : 6) + vious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + pattern$ (3 : 22) + -make-flex-pattern$ (3 : 11) + x- + pattern$ (3 : 25) + -make-flex-pattern$ (3 : 14) + ke-flex-pattern$ (3 : 19) + + +After adding character o: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-pattern$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do + c-remo$ (4 : 2) + -completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-pattern$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + flex--make-flex-pattern$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + c-remo$ (4 : 3) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + attern$ (3 : 26) + oint$ (1 : 20) + flex- + pattern$ (3 : 21) + -make-flex-pattern$ (3 : 10) + -make-flex-pattern$ (3 : 15) + make-flex-pattern$ (3 : 16) + remo$ (4 : 5) + c + -remo$ (4 : 4) + om + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-pattern$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-pattern$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + ake-flex-pattern$ (3 : 17) + o$ (4 : 8) + p + oint$ (1 : 21) + letion + - + flex--make-flex-pattern$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + attern$ (3 : 27) + l + doc-remo$ (4 : 1) + e + x- + pattern$ (3 : 23) + -make-flex-pattern$ (3 : 12) + tion + - + flex--make-flex-pattern$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-pattern$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + pattern$ (3 : 24) + -make-flex-pattern$ (3 : 13) + -flex-pattern$ (3 : 20) + rn$ (3 : 31) + ldoc-remo$ (4 : 0) + mo$ (4 : 7) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-pattern$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + tern$ (3 : 29) + ern$ (3 : 30) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-pattern$ (3 : 9) + at-point$ (1 : 16) + $ (3 : 33)$ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-pattern$ (3 : 18) + t + tern$ (3 : 28) + -point$ (1 : 18) + r + n$ (3 : 32) + e + mo$ (4 : 6) + vious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + pattern$ (3 : 22) + -make-flex-pattern$ (3 : 11) + x- + pattern$ (3 : 25) + -make-flex-pattern$ (3 : 14) + ke-flex-pattern$ (3 : 19) + + +After adding character v: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-pattern$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do + c-remov$ (4 : 2) + -completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-pattern$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + flex--make-flex-pattern$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + c-remov$ (4 : 3) + v$ (4 : 9) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + attern$ (3 : 26) + oint$ (1 : 20) + flex- + pattern$ (3 : 21) + -make-flex-pattern$ (3 : 10) + -make-flex-pattern$ (3 : 15) + make-flex-pattern$ (3 : 16) + remov$ (4 : 5) + c + -remov$ (4 : 4) + om + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-pattern$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-pattern$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + ake-flex-pattern$ (3 : 17) + ov$ (4 : 8) + p + oint$ (1 : 21) + letion + - + flex--make-flex-pattern$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + attern$ (3 : 27) + l + doc-remov$ (4 : 1) + e + x- + pattern$ (3 : 23) + -make-flex-pattern$ (3 : 12) + tion + - + flex--make-flex-pattern$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-pattern$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + pattern$ (3 : 24) + -make-flex-pattern$ (3 : 13) + -flex-pattern$ (3 : 20) + rn$ (3 : 31) + ldoc-remov$ (4 : 0) + mov$ (4 : 7) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-pattern$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + tern$ (3 : 29) + ern$ (3 : 30) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-pattern$ (3 : 9) + at-point$ (1 : 16) + $ (3 : 33)$ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-pattern$ (3 : 18) + t + tern$ (3 : 28) + -point$ (1 : 18) + r + n$ (3 : 32) + e + mov$ (4 : 6) + vious-completion$ (2 : 1) + vious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + pattern$ (3 : 22) + -make-flex-pattern$ (3 : 11) + x- + pattern$ (3 : 25) + -make-flex-pattern$ (3 : 14) + ke-flex-pattern$ (3 : 19) + + +After adding character e: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-pattern$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do + c-remove$ (4 : 2) + -completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-pattern$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + flex--make-flex-pattern$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + c-remove$ (4 : 3) + ve$ (4 : 9) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + attern$ (3 : 26) + oint$ (1 : 20) + flex- + pattern$ (3 : 21) + -make-flex-pattern$ (3 : 10) + -make-flex-pattern$ (3 : 15) + make-flex-pattern$ (3 : 16) + remove$ (4 : 5) + c + -remove$ (4 : 4) + om + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-pattern$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-pattern$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + ake-flex-pattern$ (3 : 17) + ove$ (4 : 8) + p + oint$ (1 : 21) + letion + - + flex--make-flex-pattern$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + attern$ (3 : 27) + l + doc-remove$ (4 : 1) + e + x- + pattern$ (3 : 23) + -make-flex-pattern$ (3 : 12) + tion + - + flex--make-flex-pattern$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-pattern$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + pattern$ (3 : 24) + -make-flex-pattern$ (3 : 13) + -flex-pattern$ (3 : 20) + rn$ (3 : 31) + ldoc-remove$ (4 : 0) + move$ (4 : 7) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-pattern$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + tern$ (3 : 29) + ern$ (3 : 30) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-pattern$ (3 : 9) + at-point$ (1 : 16) + $ (3 : 33)$ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-pattern$ (3 : 18) + t + tern$ (3 : 28) + -point$ (1 : 18) + r + n$ (3 : 32) + e + move$ (4 : 6) + vious-completion$ (2 : 1) + v + e$ (4 : 10) + ious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + pattern$ (3 : 22) + -make-flex-pattern$ (3 : 11) + x- + pattern$ (3 : 25) + -make-flex-pattern$ (3 : 14) + ke-flex-pattern$ (3 : 19) + + +After adding character -: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-pattern$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do + c-remove-$ (4 : 2) + -completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-pattern$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + flex--make-flex-pattern$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + c-remove-$ (4 : 3) + ve-$ (4 : 9) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + attern$ (3 : 26) + oint$ (1 : 20) + flex- + pattern$ (3 : 21) + -make-flex-pattern$ (3 : 10) + -make-flex-pattern$ (3 : 15) + make-flex-pattern$ (3 : 16) + remove-$ (4 : 5) + c + -remove-$ (4 : 4) + om + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-pattern$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-pattern$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + ake-flex-pattern$ (3 : 17) + ove-$ (4 : 8) + p + oint$ (1 : 21) + letion + - + flex--make-flex-pattern$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + attern$ (3 : 27) + l + doc-remove-$ (4 : 1) + e + x- + pattern$ (3 : 23) + -make-flex-pattern$ (3 : 12) + tion + - + flex--make-flex-pattern$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-pattern$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + pattern$ (3 : 24) + -make-flex-pattern$ (3 : 13) + -flex-pattern$ (3 : 20) + rn$ (3 : 31) + ldoc-remove-$ (4 : 0) + move-$ (4 : 7) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-pattern$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + tern$ (3 : 29) + ern$ (3 : 30) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-pattern$ (3 : 9) + at-point$ (1 : 16) + $ (3 : 33)$ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-pattern$ (3 : 18) + t + tern$ (3 : 28) + -point$ (1 : 18) + r + n$ (3 : 32) + e + move-$ (4 : 6) + vious-completion$ (2 : 1) + v + e-$ (4 : 10) + ious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + pattern$ (3 : 22) + -make-flex-pattern$ (3 : 11) + x- + pattern$ (3 : 25) + -make-flex-pattern$ (3 : 14) + ke-flex-pattern$ (3 : 19) + + +After adding character c: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-pattern$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do + c-remove-c$ (4 : 2) + -completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-pattern$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + flex--make-flex-pattern$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + c-remove-c$ (4 : 3) + ve-c$ (4 : 9) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + attern$ (3 : 26) + oint$ (1 : 20) + flex- + pattern$ (3 : 21) + -make-flex-pattern$ (3 : 10) + -make-flex-pattern$ (3 : 15) + make-flex-pattern$ (3 : 16) + remove-c$ (4 : 5) + c + -remove-c$ (4 : 4) + om + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-pattern$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-pattern$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + ake-flex-pattern$ (3 : 17) + ove-c$ (4 : 8) + p + oint$ (1 : 21) + letion + - + flex--make-flex-pattern$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + attern$ (3 : 27) + l + doc-remove-c$ (4 : 1) + e + x- + pattern$ (3 : 23) + -make-flex-pattern$ (3 : 12) + tion + - + flex--make-flex-pattern$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-pattern$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + pattern$ (3 : 24) + -make-flex-pattern$ (3 : 13) + - + c$ (4 : 11) + flex-pattern$ (3 : 20) + rn$ (3 : 31) + ldoc-remove-c$ (4 : 0) + move-c$ (4 : 7) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-pattern$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + tern$ (3 : 29) + ern$ (3 : 30) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-pattern$ (3 : 9) + at-point$ (1 : 16) + $ (3 : 33)$ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-pattern$ (3 : 18) + t + tern$ (3 : 28) + -point$ (1 : 18) + r + n$ (3 : 32) + e + move-c$ (4 : 6) + vious-completion$ (2 : 1) + v + e-c$ (4 : 10) + ious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + pattern$ (3 : 22) + -make-flex-pattern$ (3 : 11) + x- + pattern$ (3 : 25) + -make-flex-pattern$ (3 : 14) + ke-flex-pattern$ (3 : 19) + + +After adding character o: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-pattern$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do + c-remove-co$ (4 : 2) + -completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-pattern$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + flex--make-flex-pattern$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + c-remove-co$ (4 : 3) + ve-co$ (4 : 9) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + attern$ (3 : 26) + oint$ (1 : 20) + flex- + pattern$ (3 : 21) + -make-flex-pattern$ (3 : 10) + -make-flex-pattern$ (3 : 15) + make-flex-pattern$ (3 : 16) + remove-co$ (4 : 5) + c + -remove-co$ (4 : 4) + om + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-pattern$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-pattern$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + ake-flex-pattern$ (3 : 17) + ove-co$ (4 : 8) + p + oint$ (1 : 21) + letion + - + flex--make-flex-pattern$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + attern$ (3 : 27) + l + doc-remove-co$ (4 : 1) + e + x- + pattern$ (3 : 23) + -make-flex-pattern$ (3 : 12) + tion + - + flex--make-flex-pattern$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-pattern$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + pattern$ (3 : 24) + -make-flex-pattern$ (3 : 13) + - + co$ (4 : 11) + flex-pattern$ (3 : 20) + rn$ (3 : 31) + ldoc-remove-co$ (4 : 0) + move-co$ (4 : 7) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-pattern$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + tern$ (3 : 29) + ern$ (3 : 30) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-pattern$ (3 : 9) + at-point$ (1 : 16) + $ (3 : 33)$ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-pattern$ (3 : 18) + t + tern$ (3 : 28) + -point$ (1 : 18) + r + n$ (3 : 32) + e + move-co$ (4 : 6) + vious-completion$ (2 : 1) + v + e-co$ (4 : 10) + ious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + pattern$ (3 : 22) + -make-flex-pattern$ (3 : 11) + x- + pattern$ (3 : 25) + -make-flex-pattern$ (3 : 14) + ke-flex-pattern$ (3 : 19) + + +After adding character m: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-pattern$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do + c-remove-com$ (4 : 2) + -completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-pattern$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + -completions$ (0 : 2) + n + - + flex--make-flex-pattern$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + c-remove-com$ (4 : 3) + ve-com$ (4 : 9) + - + at-point$ (1 : 17) + completion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + attern$ (3 : 26) + oint$ (1 : 20) + flex- + pattern$ (3 : 21) + -make-flex-pattern$ (3 : 10) + -make-flex-pattern$ (3 : 15) + make-flex-pattern$ (3 : 16) + remove-com$ (4 : 5) + c + -remove-com$ (4 : 4) + om + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-pattern$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-pattern$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + ake-flex-pattern$ (3 : 17) + ove-com$ (4 : 8) + p + oint$ (1 : 21) + letion + - + flex--make-flex-pattern$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + attern$ (3 : 27) + l + doc-remove-com$ (4 : 1) + e + x- + pattern$ (3 : 23) + -make-flex-pattern$ (3 : 12) + tion + - + flex--make-flex-pattern$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-pattern$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + pattern$ (3 : 24) + -make-flex-pattern$ (3 : 13) + - + com$ (4 : 11) + flex-pattern$ (3 : 20) + rn$ (3 : 31) + ldoc-remove-com$ (4 : 0) + move-com$ (4 : 7) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-pattern$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + tern$ (3 : 29) + ern$ (3 : 30) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-pattern$ (3 : 9) + at-point$ (1 : 16) + $ (3 : 33)$ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-pattern$ (3 : 18) + t + tern$ (3 : 28) + -point$ (1 : 18) + r + n$ (3 : 32) + e + move-com$ (4 : 6) + vious-completion$ (2 : 1) + v + e-com$ (4 : 10) + ious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + pattern$ (3 : 22) + -make-flex-pattern$ (3 : 11) + x- + pattern$ (3 : 25) + -make-flex-pattern$ (3 : 14) + ke-flex-pattern$ (3 : 19) + + +After adding character m: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-pattern$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do + c-remove-comm$ (4 : 2) + -completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-pattern$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + m$ (4 : 14) + -completions$ (0 : 2) + n + - + flex--make-flex-pattern$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + c-remove-comm$ (4 : 3) + ve-comm$ (4 : 9) + - + at-point$ (1 : 17) + com + m$ (4 : 12) + pletion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + attern$ (3 : 26) + oint$ (1 : 20) + flex- + pattern$ (3 : 21) + -make-flex-pattern$ (3 : 10) + -make-flex-pattern$ (3 : 15) + make-flex-pattern$ (3 : 16) + remove-comm$ (4 : 5) + c + -remove-comm$ (4 : 4) + om + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-pattern$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + m$ (4 : 13) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-pattern$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + ake-flex-pattern$ (3 : 17) + ove-comm$ (4 : 8) + m$ (4 : 15) + p + oint$ (1 : 21) + letion + - + flex--make-flex-pattern$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + attern$ (3 : 27) + l + doc-remove-comm$ (4 : 1) + e + x- + pattern$ (3 : 23) + -make-flex-pattern$ (3 : 12) + tion + - + flex--make-flex-pattern$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-pattern$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + pattern$ (3 : 24) + -make-flex-pattern$ (3 : 13) + - + comm$ (4 : 11) + flex-pattern$ (3 : 20) + rn$ (3 : 31) + ldoc-remove-comm$ (4 : 0) + move-comm$ (4 : 7) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-pattern$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + tern$ (3 : 29) + ern$ (3 : 30) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-pattern$ (3 : 9) + at-point$ (1 : 16) + $ (3 : 33)$ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-pattern$ (3 : 18) + t + tern$ (3 : 28) + -point$ (1 : 18) + r + n$ (3 : 32) + e + move-comm$ (4 : 6) + vious-completion$ (2 : 1) + v + e-comm$ (4 : 10) + ious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + pattern$ (3 : 22) + -make-flex-pattern$ (3 : 11) + x- + pattern$ (3 : 25) + -make-flex-pattern$ (3 : 14) + ke-flex-pattern$ (3 : 19) + + +After adding character a: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-pattern$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do + c-remove-comma$ (4 : 2) + -completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-pattern$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + ma$ (4 : 14) + -completions$ (0 : 2) + n + - + flex--make-flex-pattern$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + c-remove-comma$ (4 : 3) + ve-comma$ (4 : 9) + - + at-point$ (1 : 17) + com + ma$ (4 : 12) + pletion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + attern$ (3 : 26) + oint$ (1 : 20) + flex- + pattern$ (3 : 21) + -make-flex-pattern$ (3 : 10) + -make-flex-pattern$ (3 : 15) + make-flex-pattern$ (3 : 16) + remove-comma$ (4 : 5) + c + -remove-comma$ (4 : 4) + om + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-pattern$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + ma$ (4 : 13) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-pattern$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + ake-flex-pattern$ (3 : 17) + ove-comma$ (4 : 8) + ma$ (4 : 15) + p + oint$ (1 : 21) + letion + - + flex--make-flex-pattern$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + attern$ (3 : 27) + l + doc-remove-comma$ (4 : 1) + e + x- + pattern$ (3 : 23) + -make-flex-pattern$ (3 : 12) + tion + - + flex--make-flex-pattern$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-pattern$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + pattern$ (3 : 24) + -make-flex-pattern$ (3 : 13) + - + comma$ (4 : 11) + flex-pattern$ (3 : 20) + rn$ (3 : 31) + ldoc-remove-comma$ (4 : 0) + move-comma$ (4 : 7) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-pattern$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + tern$ (3 : 29) + ern$ (3 : 30) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-pattern$ (3 : 9) + at-point$ (1 : 16) + $ (3 : 33)$ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-pattern$ (3 : 18) + t + tern$ (3 : 28) + -point$ (1 : 18) + r + n$ (3 : 32) + e + move-comma$ (4 : 6) + vious-completion$ (2 : 1) + v + e-comma$ (4 : 10) + ious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + pattern$ (3 : 22) + -make-flex-pattern$ (3 : 11) + x- + pattern$ (3 : 25) + -make-flex-pattern$ (3 : 14) + ke-flex-pattern$ (3 : 19) + + +After adding character n: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-pattern$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do + c-remove-comman$ (4 : 2) + -completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-pattern$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + man$ (4 : 14) + -completions$ (0 : 2) + n + - + flex--make-flex-pattern$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + c-remove-comman$ (4 : 3) + ve-comman$ (4 : 9) + - + at-point$ (1 : 17) + com + man$ (4 : 12) + pletion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + attern$ (3 : 26) + oint$ (1 : 20) + flex- + pattern$ (3 : 21) + -make-flex-pattern$ (3 : 10) + -make-flex-pattern$ (3 : 15) + make-flex-pattern$ (3 : 16) + remove-comman$ (4 : 5) + c + -remove-comman$ (4 : 4) + om + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-pattern$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + man$ (4 : 13) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-pattern$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + a + n$ (4 : 16) + ke-flex-pattern$ (3 : 17) + ove-comman$ (4 : 8) + man$ (4 : 15) + p + oint$ (1 : 21) + letion + - + flex--make-flex-pattern$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + attern$ (3 : 27) + l + doc-remove-comman$ (4 : 1) + e + x- + pattern$ (3 : 23) + -make-flex-pattern$ (3 : 12) + tion + - + flex--make-flex-pattern$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-pattern$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + pattern$ (3 : 24) + -make-flex-pattern$ (3 : 13) + - + comman$ (4 : 11) + flex-pattern$ (3 : 20) + rn$ (3 : 31) + ldoc-remove-comman$ (4 : 0) + move-comman$ (4 : 7) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-pattern$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + tern$ (3 : 29) + ern$ (3 : 30) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-pattern$ (3 : 9) + at-point$ (1 : 16) + $ (3 : 33)$ (2 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-pattern$ (3 : 18) + t + tern$ (3 : 28) + -point$ (1 : 18) + n$ (4 : 17) + r + n$ (3 : 32) + e + move-comman$ (4 : 6) + vious-completion$ (2 : 1) + v + e-comman$ (4 : 10) + ious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + pattern$ (3 : 22) + -make-flex-pattern$ (3 : 11) + x- + pattern$ (3 : 25) + -make-flex-pattern$ (3 : 14) + ke-flex-pattern$ (3 : 19) + + +After adding character d: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-pattern$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + do + c-remove-command$ (4 : 2) + -completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-pattern$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + mand$ (4 : 14) + -completions$ (0 : 2) + n + - + flex--make-flex-pattern$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + c-remove-command$ (4 : 3) + ve-command$ (4 : 9) + - + at-point$ (1 : 17) + com + mand$ (4 : 12) + pletion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + attern$ (3 : 26) + oint$ (1 : 20) + flex- + pattern$ (3 : 21) + -make-flex-pattern$ (3 : 10) + -make-flex-pattern$ (3 : 15) + make-flex-pattern$ (3 : 16) + remove-command$ (4 : 5) + c + -remove-command$ (4 : 4) + om + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-pattern$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + mand$ (4 : 13) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-pattern$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + a + nd$ (4 : 16) + ke-flex-pattern$ (3 : 17) + ove-command$ (4 : 8) + mand$ (4 : 15) + p + oint$ (1 : 21) + letion + - + flex--make-flex-pattern$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + attern$ (3 : 27) + l + doc-remove-command$ (4 : 1) + e + x- + pattern$ (3 : 23) + -make-flex-pattern$ (3 : 12) + tion + - + flex--make-flex-pattern$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-pattern$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + pattern$ (3 : 24) + -make-flex-pattern$ (3 : 13) + - + command$ (4 : 11) + flex-pattern$ (3 : 20) + rn$ (3 : 31) + ldoc-remove-command$ (4 : 0) + move-command$ (4 : 7) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-pattern$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + tern$ (3 : 29) + ern$ (3 : 30) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-pattern$ (3 : 9) + at-point$ (1 : 16) + $ (3 : 33)$ (2 : 18) + d$ (4 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-pattern$ (3 : 18) + t + tern$ (3 : 28) + -point$ (1 : 18) + nd$ (4 : 17) + r + n$ (3 : 32) + e + move-command$ (4 : 6) + vious-completion$ (2 : 1) + v + e-command$ (4 : 10) + ious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + pattern$ (3 : 22) + -make-flex-pattern$ (3 : 11) + x- + pattern$ (3 : 25) + -make-flex-pattern$ (3 : 14) + ke-flex-pattern$ (3 : 19) + + +After adding character -: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-pattern$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + d + -$ (4 : 19) + o + c-remove-command-$ (4 : 2) + -completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-pattern$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + mand-$ (4 : 14) + -completions$ (0 : 2) + n + - + flex--make-flex-pattern$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + c-remove-command-$ (4 : 3) + ve-command-$ (4 : 9) + - + at-point$ (1 : 17) + com + mand-$ (4 : 12) + pletion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + attern$ (3 : 26) + oint$ (1 : 20) + flex- + pattern$ (3 : 21) + -make-flex-pattern$ (3 : 10) + -make-flex-pattern$ (3 : 15) + make-flex-pattern$ (3 : 16) + remove-command-$ (4 : 5) + c + -remove-command-$ (4 : 4) + om + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-pattern$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + mand-$ (4 : 13) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-pattern$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + a + nd-$ (4 : 16) + ke-flex-pattern$ (3 : 17) + ove-command-$ (4 : 8) + mand-$ (4 : 15) + p + oint$ (1 : 21) + letion + - + flex--make-flex-pattern$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + attern$ (3 : 27) + l + doc-remove-command-$ (4 : 1) + e + x- + pattern$ (3 : 23) + -make-flex-pattern$ (3 : 12) + tion + - + flex--make-flex-pattern$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-pattern$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + pattern$ (3 : 24) + -make-flex-pattern$ (3 : 13) + - + command-$ (4 : 11) + flex-pattern$ (3 : 20) + rn$ (3 : 31) + ldoc-remove-command-$ (4 : 0) + move-command-$ (4 : 7) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-pattern$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + tern$ (3 : 29) + ern$ (3 : 30) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-pattern$ (3 : 9) + at-point$ (1 : 16) + $ (3 : 33)$ (2 : 18) + d-$ (4 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-pattern$ (3 : 18) + t + tern$ (3 : 28) + -point$ (1 : 18) + nd-$ (4 : 17) + r + n$ (3 : 32) + e + move-command-$ (4 : 6) + vious-completion$ (2 : 1) + v + e-command-$ (4 : 10) + ious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + pattern$ (3 : 22) + -make-flex-pattern$ (3 : 11) + x- + pattern$ (3 : 25) + -make-flex-pattern$ (3 : 14) + ke-flex-pattern$ (3 : 19) + + +After adding character c: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-pattern$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + d + -c$ (4 : 19) + o + c-remove-command-c$ (4 : 2) + -completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-pattern$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + mand-c$ (4 : 14) + -completions$ (0 : 2) + n + - + flex--make-flex-pattern$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + c-remove-command-c$ (4 : 3) + ve-command-c$ (4 : 9) + - + at-point$ (1 : 17) + com + mand-c$ (4 : 12) + pletion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + attern$ (3 : 26) + oint$ (1 : 20) + flex- + pattern$ (3 : 21) + -make-flex-pattern$ (3 : 10) + -make-flex-pattern$ (3 : 15) + make-flex-pattern$ (3 : 16) + remove-command-c$ (4 : 5) + c + -remove-command-c$ (4 : 4) + om + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-pattern$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + mand-c$ (4 : 13) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-pattern$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + a + nd-c$ (4 : 16) + ke-flex-pattern$ (3 : 17) + ove-command-c$ (4 : 8) + mand-c$ (4 : 15) + p + oint$ (1 : 21) + letion + - + flex--make-flex-pattern$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + attern$ (3 : 27) + l + doc-remove-command-c$ (4 : 1) + e + x- + pattern$ (3 : 23) + -make-flex-pattern$ (3 : 12) + tion + - + flex--make-flex-pattern$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-pattern$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + pattern$ (3 : 24) + -make-flex-pattern$ (3 : 13) + - + command-c$ (4 : 11) + flex-pattern$ (3 : 20) + rn$ (3 : 31) + ldoc-remove-command-c$ (4 : 0) + move-command-c$ (4 : 7) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-pattern$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + tern$ (3 : 29) + ern$ (3 : 30) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-pattern$ (3 : 9) + at-point$ (1 : 16) + $ (3 : 33)$ (2 : 18) + d-c$ (4 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-pattern$ (3 : 18) + t + tern$ (3 : 28) + -point$ (1 : 18) + nd-c$ (4 : 17) + r + n$ (3 : 32) + e + move-command-c$ (4 : 6) + vious-completion$ (2 : 1) + v + e-command-c$ (4 : 10) + ious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + pattern$ (3 : 22) + -make-flex-pattern$ (3 : 11) + x- + pattern$ (3 : 25) + -make-flex-pattern$ (3 : 14) + ke-flex-pattern$ (3 : 19) + + +After adding character o: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-pattern$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + d + -co$ (4 : 19) + o + c-remove-command-co$ (4 : 2) + -completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-pattern$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + mand-co$ (4 : 14) + -completions$ (0 : 2) + n + - + flex--make-flex-pattern$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + c-remove-command-co$ (4 : 3) + ve-command-co$ (4 : 9) + - + at-point$ (1 : 17) + com + mand-co$ (4 : 12) + pletion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + attern$ (3 : 26) + oint$ (1 : 20) + flex- + pattern$ (3 : 21) + -make-flex-pattern$ (3 : 10) + -make-flex-pattern$ (3 : 15) + make-flex-pattern$ (3 : 16) + remove-command-co$ (4 : 5) + c + -remove-command-co$ (4 : 4) + om + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-pattern$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + mand-co$ (4 : 13) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-pattern$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + a + nd-co$ (4 : 16) + ke-flex-pattern$ (3 : 17) + ove-command-co$ (4 : 8) + mand-co$ (4 : 15) + p + oint$ (1 : 21) + letion + - + flex--make-flex-pattern$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + attern$ (3 : 27) + l + doc-remove-command-co$ (4 : 1) + e + x- + pattern$ (3 : 23) + -make-flex-pattern$ (3 : 12) + tion + - + flex--make-flex-pattern$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-pattern$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + pattern$ (3 : 24) + -make-flex-pattern$ (3 : 13) + - + command-co$ (4 : 11) + flex-pattern$ (3 : 20) + rn$ (3 : 31) + ldoc-remove-command-co$ (4 : 0) + move-command-co$ (4 : 7) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-pattern$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + tern$ (3 : 29) + ern$ (3 : 30) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-pattern$ (3 : 9) + at-point$ (1 : 16) + $ (3 : 33)$ (2 : 18) + d-co$ (4 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-pattern$ (3 : 18) + t + tern$ (3 : 28) + -point$ (1 : 18) + nd-co$ (4 : 17) + r + n$ (3 : 32) + e + move-command-co$ (4 : 6) + vious-completion$ (2 : 1) + v + e-command-co$ (4 : 10) + ious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + pattern$ (3 : 22) + -make-flex-pattern$ (3 : 11) + x- + pattern$ (3 : 25) + -make-flex-pattern$ (3 : 14) + ke-flex-pattern$ (3 : 19) + + +After adding character m: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-pattern$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + d + -com$ (4 : 19) + o + c-remove-command-com$ (4 : 2) + -completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-pattern$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + mand-com$ (4 : 14) + -completions$ (0 : 2) + n + - + flex--make-flex-pattern$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + c-remove-command-com$ (4 : 3) + ve-command-com$ (4 : 9) + - + at-point$ (1 : 17) + com + mand-com$ (4 : 12) + pletion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + attern$ (3 : 26) + oint$ (1 : 20) + flex- + pattern$ (3 : 21) + -make-flex-pattern$ (3 : 10) + -make-flex-pattern$ (3 : 15) + make-flex-pattern$ (3 : 16) + remove-command-com$ (4 : 5) + c + -remove-command-com$ (4 : 4) + om + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-pattern$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + mand-com$ (4 : 13) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-pattern$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + a + nd-com$ (4 : 16) + ke-flex-pattern$ (3 : 17) + ove-command-com$ (4 : 8) + mand-com$ (4 : 15) + p + oint$ (1 : 21) + letion + - + flex--make-flex-pattern$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + attern$ (3 : 27) + l + doc-remove-command-com$ (4 : 1) + e + x- + pattern$ (3 : 23) + -make-flex-pattern$ (3 : 12) + tion + - + flex--make-flex-pattern$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-pattern$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + pattern$ (3 : 24) + -make-flex-pattern$ (3 : 13) + - + command-com$ (4 : 11) + flex-pattern$ (3 : 20) + rn$ (3 : 31) + ldoc-remove-command-com$ (4 : 0) + move-command-com$ (4 : 7) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-pattern$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + tern$ (3 : 29) + ern$ (3 : 30) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-pattern$ (3 : 9) + at-point$ (1 : 16) + $ (3 : 33)$ (2 : 18) + d-com$ (4 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-pattern$ (3 : 18) + t + tern$ (3 : 28) + -point$ (1 : 18) + nd-com$ (4 : 17) + r + n$ (3 : 32) + e + move-command-com$ (4 : 6) + vious-completion$ (2 : 1) + v + e-command-com$ (4 : 10) + ious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + pattern$ (3 : 22) + -make-flex-pattern$ (3 : 11) + x- + pattern$ (3 : 25) + -make-flex-pattern$ (3 : 14) + ke-flex-pattern$ (3 : 19) + + +After adding character p: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-pattern$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + d + -comp$ (4 : 19) + o + c-remove-command-comp$ (4 : 2) + -completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-pattern$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + mand-comp$ (4 : 14) + -completions$ (0 : 2) + n + - + flex--make-flex-pattern$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + c-remove-command-comp$ (4 : 3) + ve-command-comp$ (4 : 9) + - + at-point$ (1 : 17) + com + mand-comp$ (4 : 12) + pletion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + attern$ (3 : 26) + oint$ (1 : 20) + flex- + pattern$ (3 : 21) + -make-flex-pattern$ (3 : 10) + -make-flex-pattern$ (3 : 15) + make-flex-pattern$ (3 : 16) + remove-command-comp$ (4 : 5) + c + -remove-command-comp$ (4 : 4) + om + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-pattern$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + mand-comp$ (4 : 13) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-pattern$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + a + nd-comp$ (4 : 16) + ke-flex-pattern$ (3 : 17) + ove-command-comp$ (4 : 8) + mand-comp$ (4 : 15) + p + oint$ (1 : 21) + letion + - + flex--make-flex-pattern$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + attern$ (3 : 27) + l + doc-remove-command-comp$ (4 : 1) + e + x- + pattern$ (3 : 23) + -make-flex-pattern$ (3 : 12) + tion + - + flex--make-flex-pattern$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-pattern$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + pattern$ (3 : 24) + -make-flex-pattern$ (3 : 13) + - + command-comp$ (4 : 11) + flex-pattern$ (3 : 20) + rn$ (3 : 31) + ldoc-remove-command-comp$ (4 : 0) + move-command-comp$ (4 : 7) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-pattern$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + tern$ (3 : 29) + ern$ (3 : 30) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-pattern$ (3 : 9) + at-point$ (1 : 16) + $ (3 : 33)$ (2 : 18) + d-comp$ (4 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-pattern$ (3 : 18) + t + tern$ (3 : 28) + -point$ (1 : 18) + nd-comp$ (4 : 17) + r + n$ (3 : 32) + e + move-command-comp$ (4 : 6) + vious-completion$ (2 : 1) + v + e-command-comp$ (4 : 10) + ious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + pattern$ (3 : 22) + -make-flex-pattern$ (3 : 11) + x- + pattern$ (3 : 25) + -make-flex-pattern$ (3 : 14) + ke-flex-pattern$ (3 : 19) + + +After adding character l: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-pattern$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + d + -compl$ (4 : 19) + o + c-remove-command-compl$ (4 : 2) + -completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-pattern$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + mand-compl$ (4 : 14) + -completions$ (0 : 2) + n + - + flex--make-flex-pattern$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + c-remove-command-compl$ (4 : 3) + ve-command-compl$ (4 : 9) + - + at-point$ (1 : 17) + com + mand-compl$ (4 : 12) + pletion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + attern$ (3 : 26) + oint$ (1 : 20) + flex- + pattern$ (3 : 21) + -make-flex-pattern$ (3 : 10) + -make-flex-pattern$ (3 : 15) + make-flex-pattern$ (3 : 16) + remove-command-compl$ (4 : 5) + c + -remove-command-compl$ (4 : 4) + om + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-pattern$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + mand-compl$ (4 : 13) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-pattern$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + a + nd-compl$ (4 : 16) + ke-flex-pattern$ (3 : 17) + ove-command-compl$ (4 : 8) + mand-compl$ (4 : 15) + p + oint$ (1 : 21) + letion + - + flex--make-flex-pattern$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + attern$ (3 : 27) + l + doc-remove-command-compl$ (4 : 1) + e + x- + pattern$ (3 : 23) + -make-flex-pattern$ (3 : 12) + tion + - + flex--make-flex-pattern$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-pattern$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + pattern$ (3 : 24) + -make-flex-pattern$ (3 : 13) + - + command-compl$ (4 : 11) + flex-pattern$ (3 : 20) + rn$ (3 : 31) + ldoc-remove-command-compl$ (4 : 0) + move-command-compl$ (4 : 7) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-pattern$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + tern$ (3 : 29) + ern$ (3 : 30) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-pattern$ (3 : 9) + at-point$ (1 : 16) + $ (3 : 33)$ (2 : 18) + d-compl$ (4 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-pattern$ (3 : 18) + t + tern$ (3 : 28) + -point$ (1 : 18) + nd-compl$ (4 : 17) + r + n$ (3 : 32) + e + move-command-compl$ (4 : 6) + vious-completion$ (2 : 1) + v + e-command-compl$ (4 : 10) + ious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + pattern$ (3 : 22) + -make-flex-pattern$ (3 : 11) + x- + pattern$ (3 : 25) + -make-flex-pattern$ (3 : 14) + ke-flex-pattern$ (3 : 19) + + +After adding character e: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-pattern$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + d + -comple$ (4 : 19) + o + c-remove-command-comple$ (4 : 2) + -completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-pattern$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + mand-comple$ (4 : 14) + -completions$ (0 : 2) + n + - + flex--make-flex-pattern$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + c-remove-command-comple$ (4 : 3) + ve-command-comple$ (4 : 9) + - + at-point$ (1 : 17) + com + mand-comple$ (4 : 12) + pletion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + attern$ (3 : 26) + oint$ (1 : 20) + flex- + pattern$ (3 : 21) + -make-flex-pattern$ (3 : 10) + -make-flex-pattern$ (3 : 15) + make-flex-pattern$ (3 : 16) + remove-command-comple$ (4 : 5) + c + -remove-command-comple$ (4 : 4) + om + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-pattern$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + mand-comple$ (4 : 13) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-pattern$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + a + nd-comple$ (4 : 16) + ke-flex-pattern$ (3 : 17) + ove-command-comple$ (4 : 8) + mand-comple$ (4 : 15) + p + oint$ (1 : 21) + letion + - + flex--make-flex-pattern$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + attern$ (3 : 27) + l + doc-remove-command-comple$ (4 : 1) + e + x- + pattern$ (3 : 23) + -make-flex-pattern$ (3 : 12) + tion + - + flex--make-flex-pattern$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-pattern$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + pattern$ (3 : 24) + -make-flex-pattern$ (3 : 13) + - + command-comple$ (4 : 11) + flex-pattern$ (3 : 20) + rn$ (3 : 31) + ldoc-remove-command-comple$ (4 : 0) + move-command-comple$ (4 : 7) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-pattern$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + tern$ (3 : 29) + ern$ (3 : 30) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-pattern$ (3 : 9) + at-point$ (1 : 16) + $ (3 : 33)$ (2 : 18) + d-comple$ (4 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-pattern$ (3 : 18) + t + tern$ (3 : 28) + -point$ (1 : 18) + nd-comple$ (4 : 17) + r + n$ (3 : 32) + e + move-command-comple$ (4 : 6) + vious-completion$ (2 : 1) + v + e-command-comple$ (4 : 10) + ious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + pattern$ (3 : 22) + -make-flex-pattern$ (3 : 11) + x- + pattern$ (3 : 25) + -make-flex-pattern$ (3 : 14) + ke-flex-pattern$ (3 : 19) + + +After adding character t: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-pattern$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + d + -complet$ (4 : 19) + o + c-remove-command-complet$ (4 : 2) + -completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-pattern$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + mand-complet$ (4 : 14) + -completions$ (0 : 2) + n + - + flex--make-flex-pattern$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + c-remove-command-complet$ (4 : 3) + ve-command-complet$ (4 : 9) + - + at-point$ (1 : 17) + com + mand-complet$ (4 : 12) + pletion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + attern$ (3 : 26) + oint$ (1 : 20) + flex- + pattern$ (3 : 21) + -make-flex-pattern$ (3 : 10) + -make-flex-pattern$ (3 : 15) + make-flex-pattern$ (3 : 16) + remove-command-complet$ (4 : 5) + c + -remove-command-complet$ (4 : 4) + om + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-pattern$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + mand-complet$ (4 : 13) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-pattern$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + a + nd-complet$ (4 : 16) + ke-flex-pattern$ (3 : 17) + ove-command-complet$ (4 : 8) + mand-complet$ (4 : 15) + p + oint$ (1 : 21) + letion + - + flex--make-flex-pattern$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + attern$ (3 : 27) + l + doc-remove-command-complet$ (4 : 1) + e + x- + pattern$ (3 : 23) + -make-flex-pattern$ (3 : 12) + tion + - + flex--make-flex-pattern$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-pattern$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + pattern$ (3 : 24) + -make-flex-pattern$ (3 : 13) + - + command-complet$ (4 : 11) + flex-pattern$ (3 : 20) + rn$ (3 : 31) + ldoc-remove-command-complet$ (4 : 0) + move-command-complet$ (4 : 7) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-pattern$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + tern$ (3 : 29) + ern$ (3 : 30) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-pattern$ (3 : 9) + at-point$ (1 : 16) + $ (3 : 33)$ (2 : 18) + d-complet$ (4 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-pattern$ (3 : 18) + t + tern$ (3 : 28) + -point$ (1 : 18) + nd-complet$ (4 : 17) + r + n$ (3 : 32) + e + move-command-complet$ (4 : 6) + vious-completion$ (2 : 1) + v + e-command-complet$ (4 : 10) + ious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + pattern$ (3 : 22) + -make-flex-pattern$ (3 : 11) + x- + pattern$ (3 : 25) + -make-flex-pattern$ (3 : 14) + ke-flex-pattern$ (3 : 19) + + +After adding character i: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-pattern$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + d + -completi$ (4 : 19) + o + c-remove-command-completi$ (4 : 2) + -completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-pattern$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + mand-completi$ (4 : 14) + -completions$ (0 : 2) + n + - + flex--make-flex-pattern$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + c-remove-command-completi$ (4 : 3) + ve-command-completi$ (4 : 9) + - + at-point$ (1 : 17) + com + mand-completi$ (4 : 12) + pletion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + attern$ (3 : 26) + oint$ (1 : 20) + flex- + pattern$ (3 : 21) + -make-flex-pattern$ (3 : 10) + -make-flex-pattern$ (3 : 15) + make-flex-pattern$ (3 : 16) + remove-command-completi$ (4 : 5) + c + -remove-command-completi$ (4 : 4) + om + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-pattern$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + mand-completi$ (4 : 13) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-pattern$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + a + nd-completi$ (4 : 16) + ke-flex-pattern$ (3 : 17) + ove-command-completi$ (4 : 8) + mand-completi$ (4 : 15) + p + oint$ (1 : 21) + letion + - + flex--make-flex-pattern$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + attern$ (3 : 27) + l + doc-remove-command-completi$ (4 : 1) + e + x- + pattern$ (3 : 23) + -make-flex-pattern$ (3 : 12) + tion + - + flex--make-flex-pattern$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-pattern$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + pattern$ (3 : 24) + -make-flex-pattern$ (3 : 13) + - + command-completi$ (4 : 11) + flex-pattern$ (3 : 20) + rn$ (3 : 31) + ldoc-remove-command-completi$ (4 : 0) + move-command-completi$ (4 : 7) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-pattern$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + tern$ (3 : 29) + ern$ (3 : 30) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-pattern$ (3 : 9) + at-point$ (1 : 16) + $ (3 : 33)$ (2 : 18) + d-completi$ (4 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-pattern$ (3 : 18) + t + tern$ (3 : 28) + -point$ (1 : 18) + nd-completi$ (4 : 17) + r + n$ (3 : 32) + e + move-command-completi$ (4 : 6) + vious-completion$ (2 : 1) + v + e-command-completi$ (4 : 10) + ious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + pattern$ (3 : 22) + -make-flex-pattern$ (3 : 11) + x- + pattern$ (3 : 25) + -make-flex-pattern$ (3 : 14) + ke-flex-pattern$ (3 : 19) + + +After adding character o: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-pattern$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + d + -completio$ (4 : 19) + o + c-remove-command-completio$ (4 : 2) + -completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-pattern$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + mand-completio$ (4 : 14) + -completions$ (0 : 2) + n + - + flex--make-flex-pattern$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + c-remove-command-completio$ (4 : 3) + ve-command-completio$ (4 : 9) + - + at-point$ (1 : 17) + com + mand-completio$ (4 : 12) + pletion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + attern$ (3 : 26) + oint$ (1 : 20) + flex- + pattern$ (3 : 21) + -make-flex-pattern$ (3 : 10) + -make-flex-pattern$ (3 : 15) + make-flex-pattern$ (3 : 16) + remove-command-completio$ (4 : 5) + c + -remove-command-completio$ (4 : 4) + om + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-pattern$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + mand-completio$ (4 : 13) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-pattern$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + a + nd-completio$ (4 : 16) + ke-flex-pattern$ (3 : 17) + ove-command-completio$ (4 : 8) + mand-completio$ (4 : 15) + p + oint$ (1 : 21) + letion + - + flex--make-flex-pattern$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + attern$ (3 : 27) + l + doc-remove-command-completio$ (4 : 1) + e + x- + pattern$ (3 : 23) + -make-flex-pattern$ (3 : 12) + tion + - + flex--make-flex-pattern$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-pattern$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + pattern$ (3 : 24) + -make-flex-pattern$ (3 : 13) + - + command-completio$ (4 : 11) + flex-pattern$ (3 : 20) + rn$ (3 : 31) + ldoc-remove-command-completio$ (4 : 0) + move-command-completio$ (4 : 7) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-pattern$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + tern$ (3 : 29) + ern$ (3 : 30) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-pattern$ (3 : 9) + at-point$ (1 : 16) + $ (3 : 33)$ (2 : 18) + d-completio$ (4 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-pattern$ (3 : 18) + t + tern$ (3 : 28) + -point$ (1 : 18) + nd-completio$ (4 : 17) + r + n$ (3 : 32) + e + move-command-completio$ (4 : 6) + vious-completion$ (2 : 1) + v + e-command-completio$ (4 : 10) + ious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + pattern$ (3 : 22) + -make-flex-pattern$ (3 : 11) + x- + pattern$ (3 : 25) + -make-flex-pattern$ (3 : 14) + ke-flex-pattern$ (3 : 19) + + +After adding character n: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-pattern$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + d + -completion$ (4 : 19) + o + c-remove-command-completion$ (4 : 2) + -completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-pattern$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + mand-completion$ (4 : 14) + -completions$ (0 : 2) + n + - + flex--make-flex-pattern$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + c-remove-command-completion$ (4 : 3) + ve-command-completion$ (4 : 9) + - + at-point$ (1 : 17) + com + mand-completion$ (4 : 12) + pletion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + attern$ (3 : 26) + oint$ (1 : 20) + flex- + pattern$ (3 : 21) + -make-flex-pattern$ (3 : 10) + -make-flex-pattern$ (3 : 15) + make-flex-pattern$ (3 : 16) + remove-command-completion$ (4 : 5) + c + -remove-command-completion$ (4 : 4) + om + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-pattern$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + mand-completion$ (4 : 13) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-pattern$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + a + nd-completion$ (4 : 16) + ke-flex-pattern$ (3 : 17) + ove-command-completion$ (4 : 8) + mand-completion$ (4 : 15) + p + oint$ (1 : 21) + letion + - + flex--make-flex-pattern$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + attern$ (3 : 27) + l + doc-remove-command-completion$ (4 : 1) + e + x- + pattern$ (3 : 23) + -make-flex-pattern$ (3 : 12) + tion + - + flex--make-flex-pattern$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-pattern$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + pattern$ (3 : 24) + -make-flex-pattern$ (3 : 13) + - + command-completion$ (4 : 11) + flex-pattern$ (3 : 20) + rn$ (3 : 31) + ldoc-remove-command-completion$ (4 : 0) + move-command-completion$ (4 : 7) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-pattern$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + tern$ (3 : 29) + ern$ (3 : 30) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-pattern$ (3 : 9) + at-point$ (1 : 16) + $ (3 : 33)$ (2 : 18) + d-completion$ (4 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-pattern$ (3 : 18) + t + tern$ (3 : 28) + -point$ (1 : 18) + nd-completion$ (4 : 17) + r + n$ (3 : 32) + e + move-command-completion$ (4 : 6) + vious-completion$ (2 : 1) + v + e-command-completion$ (4 : 10) + ious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + pattern$ (3 : 22) + -make-flex-pattern$ (3 : 11) + x- + pattern$ (3 : 25) + -make-flex-pattern$ (3 : 14) + ke-flex-pattern$ (3 : 19) + + +After adding character s: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-pattern$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + d + -completions$ (4 : 19) + o + c-remove-command-completions$ (4 : 2) + -completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-pattern$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + mand-completions$ (4 : 14) + -completions$ (0 : 2) + n + - + flex--make-flex-pattern$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + c-remove-command-completions$ (4 : 3) + ve-command-completions$ (4 : 9) + - + at-point$ (1 : 17) + com + mand-completions$ (4 : 12) + pletion + -at-point$ (1 : 6) + s$ (0 : 3) + $ (2 : 8) + p + attern$ (3 : 26) + oint$ (1 : 20) + flex- + pattern$ (3 : 21) + -make-flex-pattern$ (3 : 10) + -make-flex-pattern$ (3 : 15) + make-flex-pattern$ (3 : 16) + remove-command-completions$ (4 : 5) + c + -remove-command-completions$ (4 : 4) + om + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-pattern$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + mand-completions$ (4 : 13) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-pattern$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + a + nd-completions$ (4 : 16) + ke-flex-pattern$ (3 : 17) + ove-command-completions$ (4 : 8) + mand-completions$ (4 : 15) + p + oint$ (1 : 21) + letion + - + flex--make-flex-pattern$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + attern$ (3 : 27) + l + doc-remove-command-completions$ (4 : 1) + e + x- + pattern$ (3 : 23) + -make-flex-pattern$ (3 : 12) + tion + - + flex--make-flex-pattern$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-pattern$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + pattern$ (3 : 24) + -make-flex-pattern$ (3 : 13) + - + command-completions$ (4 : 11) + flex-pattern$ (3 : 20) + rn$ (3 : 31) + ldoc-remove-command-completions$ (4 : 0) + move-command-completions$ (4 : 7) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-pattern$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + tern$ (3 : 29) + ern$ (3 : 30) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-pattern$ (3 : 9) + at-point$ (1 : 16) + $ (3 : 33)$ (2 : 18) + d-completions$ (4 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-pattern$ (3 : 18) + t + tern$ (3 : 28) + -point$ (1 : 18) + nd-completions$ (4 : 17) + r + n$ (3 : 32) + e + move-command-completions$ (4 : 6) + vious-completion$ (2 : 1) + v + e-command-completions$ (4 : 10) + ious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + pattern$ (3 : 22) + -make-flex-pattern$ (3 : 11) + x- + pattern$ (3 : 25) + -make-flex-pattern$ (3 : 14) + ke-flex-pattern$ (3 : 19) + + +After adding character -1: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-pattern$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + d + -completions$ (4 : 19) + o + c-remove-command-completions$ (4 : 2) + -completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-pattern$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + mand-completions$ (4 : 14) + -completions$ (0 : 2) + n + - + flex--make-flex-pattern$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + c-remove-command-completions$ (4 : 3) + ve-command-completions$ (4 : 9) + - + at-point$ (1 : 17) + com + mand-completions$ (4 : 12) + pletion + -at-point$ (1 : 6) + s$ (4 : 20)$ (0 : 3) + $ (2 : 8) + p + attern$ (3 : 26) + oint$ (1 : 20) + flex- + pattern$ (3 : 21) + -make-flex-pattern$ (3 : 10) + -make-flex-pattern$ (3 : 15) + make-flex-pattern$ (3 : 16) + remove-command-completions$ (4 : 5) + c + -remove-command-completions$ (4 : 4) + om + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-pattern$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + mand-completions$ (4 : 13) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-pattern$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + a + nd-completions$ (4 : 16) + ke-flex-pattern$ (3 : 17) + ove-command-completions$ (4 : 8) + mand-completions$ (4 : 15) + p + oint$ (1 : 21) + letion + - + flex--make-flex-pattern$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + attern$ (3 : 27) + l + doc-remove-command-completions$ (4 : 1) + e + x- + pattern$ (3 : 23) + -make-flex-pattern$ (3 : 12) + tion + - + flex--make-flex-pattern$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-pattern$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + pattern$ (3 : 24) + -make-flex-pattern$ (3 : 13) + - + command-completions$ (4 : 11) + flex-pattern$ (3 : 20) + rn$ (3 : 31) + ldoc-remove-command-completions$ (4 : 0) + move-command-completions$ (4 : 7) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-pattern$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + tern$ (3 : 29) + ern$ (3 : 30) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-pattern$ (3 : 9) + at-point$ (1 : 16) + $ (3 : 33)$ (2 : 18) + d-completions$ (4 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-pattern$ (3 : 18) + t + tern$ (3 : 28) + -point$ (1 : 18) + nd-completions$ (4 : 17) + r + n$ (3 : 32) + e + move-command-completions$ (4 : 6) + vious-completion$ (2 : 1) + v + e-command-completions$ (4 : 10) + ious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + pattern$ (3 : 22) + -make-flex-pattern$ (3 : 11) + x- + pattern$ (3 : 25) + -make-flex-pattern$ (3 : 14) + ke-flex-pattern$ (3 : 19) + + + + diff --git a/suffix tree/lcs test ground.txt b/suffix tree/lcs test ground.txt new file mode 100644 index 0000000..5762268 --- /dev/null +++ b/suffix tree/lcs test ground.txt @@ -0,0 +1,180 @@ + +longest commons substring of ("abab" "baba") is: +(3 + ((0 2 3 + ((0 1 2) + (0 0 1))) + (0 3 4 + ((0 2 3) + (0 1 2))))) + +Generalized suffix tree for: ido-completions, comint-completion-at-point, previous-completion, completion-flex--make-flex-pattern, eldoc-remove-command-completions: +root + i + o + us-completion$ (2 : 4) + n + - + flex--make-flex-pattern$ (3 : 7) + at-point$ (1 : 14) + s$ (0 : 11) + $ (2 : 16) + do-completions$ (0 : 0) + nt + $ (1 : 23) + -completion-at-point$ (1 : 3) + d + -completions$ (4 : 19) + o + c-remove-command-completions$ (4 : 2) + -completions$ (0 : 1) + o + m + int-completion-at-point$ (1 : 1) + pletion + - + flex--make-flex-pattern$ (3 : 1) + at-point$ (1 : 8) + s$ (0 : 5) + $ (2 : 10) + mand-completions$ (4 : 14) + -completions$ (0 : 2) + n + - + flex--make-flex-pattern$ (3 : 8) + at-point$ (1 : 15) + s$ (0 : 12) + $ (2 : 17) + int$ (1 : 22) + us-completion$ (2 : 5) + c-remove-command-completions$ (4 : 3) + ve-command-completions$ (4 : 9) + - + at-point$ (1 : 17) + com + mand-completions$ (4 : 12) + pletion + -at-point$ (1 : 6) + s$ (4 : 20)$ (0 : 3) + $ (2 : 8) + p + attern$ (3 : 26) + oint$ (1 : 20) + flex- + pattern$ (3 : 21) + -make-flex-pattern$ (3 : 10) + -make-flex-pattern$ (3 : 15) + make-flex-pattern$ (3 : 16) + remove-command-completions$ (4 : 5) + c + -remove-command-completions$ (4 : 4) + om + int-completion-at-point$ (1 : 0) + pletion + - + flex--make-flex-pattern$ (3 : 0) + at-point$ (1 : 7) + s$ (0 : 4) + $ (2 : 9) + mand-completions$ (4 : 13) + m + int-completion-at-point$ (1 : 2) + pletion + - + flex--make-flex-pattern$ (3 : 2) + at-point$ (1 : 9) + s$ (0 : 6) + $ (2 : 11) + a + nd-completions$ (4 : 16) + ke-flex-pattern$ (3 : 17) + ove-command-completions$ (4 : 8) + mand-completions$ (4 : 15) + p + oint$ (1 : 21) + letion + - + flex--make-flex-pattern$ (3 : 3) + at-point$ (1 : 10) + s$ (0 : 7) + $ (2 : 12) + revious-completion$ (2 : 0) + attern$ (3 : 27) + l + doc-remove-command-completions$ (4 : 1) + e + x- + pattern$ (3 : 23) + -make-flex-pattern$ (3 : 12) + tion + - + flex--make-flex-pattern$ (3 : 4) + at-point$ (1 : 11) + s$ (0 : 8) + $ (2 : 13) + e + vious-completion$ (2 : 2) + tion + - + flex--make-flex-pattern$ (3 : 5) + at-point$ (1 : 12) + s$ (0 : 9) + $ (2 : 14) + x- + pattern$ (3 : 24) + -make-flex-pattern$ (3 : 13) + - + command-completions$ (4 : 11) + flex-pattern$ (3 : 20) + rn$ (3 : 31) + ldoc-remove-command-completions$ (4 : 0) + move-command-completions$ (4 : 7) + t + - + point$ (1 : 19) + completion-at-point$ (1 : 5) + ion + - + flex--make-flex-pattern$ (3 : 6) + at-point$ (1 : 13) + s$ (0 : 10) + $ (2 : 15) + $ (1 : 25) + tern$ (3 : 29) + ern$ (3 : 30) + n + t + $ (1 : 24) + -completion-at-point$ (1 : 4) + s$ (0 : 13) + - + flex--make-flex-pattern$ (3 : 9) + at-point$ (1 : 16) + $ (3 : 33)$ (2 : 18) + d-completions$ (4 : 18) + s + -completion$ (2 : 7) + $ (0 : 14) + $ (2 : 19)$ (1 : 26)$ (0 : 15) + a + ke-flex-pattern$ (3 : 18) + t + tern$ (3 : 28) + -point$ (1 : 18) + nd-completions$ (4 : 17) + r + n$ (3 : 32) + e + move-command-completions$ (4 : 6) + vious-completion$ (2 : 1) + v + e-command-completions$ (4 : 10) + ious-completion$ (2 : 3) + us-completion$ (2 : 6) + flex- + pattern$ (3 : 22) + -make-flex-pattern$ (3 : 11) + x- + pattern$ (3 : 25) + -make-flex-pattern$ (3 : 14) + ke-flex-pattern$ (3 : 19) diff --git a/suffix tree/suffiex-tree.txt b/suffix tree/suffiex-tree.txt new file mode 100644 index 0000000..6eb4b5a --- /dev/null +++ b/suffix tree/suffiex-tree.txt @@ -0,0 +1,168 @@ +Title: Suffix Trees +Author: JSDurand +Created: 2020-01-03 +------------------- + +====================================================================== + Motivation to implement this algorithm in Emacs +====================================================================== + +The reason I want to implement this algorithm is a problem I +encountered in using the package "orderless", which provides a +completion-style for the built-in completion system in Emacs. The +problem is that the function "orderless-try-completion" does not +handle completion aggressively in a way that conforms to the +documentation of "try-completion". To be more precise, if there is +only one match for the current text input, then this function returns +that match (rather than comforming to the requirement in the +documentation of "try-completion" by returning t, since it wants to +highlight the matches by itself). This isn't a problem from the +perspective of the user, and if there are no matches, then this +correctly returns nil. But in any other cases, this function returns +the original string, instead of the longest common substring, as a +user might desire. + +Initially, this does not seem like a serious concern: the user could +still select a completion from the "*Completions*" buffer once the +list of candidates becomes small enough to easily manage. But as time +goes by, this starts to frustrate me. For example, when there are only +two candidates left, but one is a substring of another, then I cannot +use the completion feature to quickly select (or "complete to") the +shorter candidate, unless I type out the full candidate string, or to +choose from the "*Completions*" buffer. For me this kind of defeats +the main purpose of the built-in completion system. + +So I start wondering, is it possible to fix the problem by finding the +longest common substring in all the matches? From a naïve first +impression, this seems to be what the user might expect in most cases. + + + +====================================================================== + Choice of the algorithm +====================================================================== + +After some thinking and searching through the internet, I found that +perhaps the most flexible and performant solution to the problem of +finding the longest common substring(s) of multiple strings is to +build a "generalized suffix tree" of them, and then use a tree +traversal to find the longest common substring(s). Well, this is all +fun and great. The only problem is that it is difficult to build a +suffix tree (or a generalized one). + +So I decide to implement the seemingly fastest algorithm to construct +a suffix tree of strings and hope that this can not only solve my +problem but also help others out in some other problems in the future. + + + +====================================================================== + Definitions +====================================================================== + +I describe the basic definition of a suffix tree briefly below. + +In this document a string is a sequence of alphabets. In particular, +for the case of Emacs, these alphabets are just numbers. We begin by +considering a string S of length n. A suffix of S is a substring of S +of the form S[i..n] for some i from 1 to n. And we also say the empty +string is a suffix of S. A suffix tree of S is defined as a rooted +tree T (so it has a node called "root" that is the ancestor of every +other node) whose every edge has a label which is a substring of S +that satisfies the following conditions: + +- Starting from the root of T, walking down any path to a leaf, and + concatenating the labels along the way, then we will get a suffix of + S. And every suffix of S is obtained in this way as well. +- Every node has at least two out-going edges. +- For every node, every two out-going edges cannot have labels that + start with the same letter. (So two edges with labels both starting + with 'a' cannot emanate from the same node.) + +Intuitively speaking, this is to list all suffixes of S as an edge +from the root to a leaf, and then "merge" these suffixes so that any +common prefix among some of them is in only one edge. + +As a concrete example, the suffix tree for "hah$" is given as follows. +I am using the library "hierarchy.el" to visualize trees. + +root + h + $ + ah$ + ah$ + $ + + + + +====================================================================== + Naive description of the algorithm +====================================================================== + +Below is a breif description of the algorithm. For a description in +"plain English", see the accepted answer to this Stack Overflow post. + +https://stackoverflow.com/questions/9452701/ + +Fonr a more detailed survey on the principle behind the algorithm and +on many other related topics, see the book "Algorithms on Strings, +Trees, and Sequences: Computer Science and Computational Biology" by +Dan Gusfield, or if you prefer reading the original paper, then the +original paper by Ukkonen is as follows. + +https://link.springer.com/article/10.1007/BF01206331 + +(I am fortunate enough to be able to access the article. If you want +to read that PDF and don't want to pay Springer, let me know and I can +send you the file.) + +Given a string S of length n, we will first append a symbol that is +not present anywhere in S, in order to ensure that no suffix of S is +also the prefix of another suffix of S; otherwise S cannot have a +suffix tree. I refer to this terminating symbol as $. + +Also an edge of the tree is not labelled explicitly by strings. To do +so would violate already the linear time constraint. Instead, we +represent each edge with a pair of integers, interpreted as the +indices of the starting and the ending positions of the associated +substring in T. + +The algorithm has n + 1 iterations. We start with the following +variables: + +- A root node. +- An active node. +- An active edge. +- The length of the active edge. +- "remainder" with value 0. + +Then we want to add n + 1 symbols to the tree iteratively. + +In the i-th iteration we look to add the substring +S[(i-remainder+1)..i] of S. In Emacs Lisp this is expressed as +(substring S (- i remainder -1) (1+ i)). + +And in each iteration we do the following things (the description that +follows is not rigorous; see the sources mentioned above for more +detailed and rigorous expositions): + +- Check if the "active point" specified by the triple + (active node, active edge, active edge length) + has an edge going out whose first letter of the label matches the + i-th character of S. +- If it matches, then that means we don't have to add anything to + the tree: we just update the specifications of the active point to + point to the right place. +- Otherwise, we add the i-th charcter of S as a new leaf of the + active point. This may involve splitting an edge. +- In both of the sub-cases, if there is a node that we created in + the last round, then we add a "suffix link" that points to the + current node. This suffix link is the main reason this algorithm + can run in linear time. +- After updating the active point, we still need to make sure that our + specification of the active point is valid. We do this by examining + if the active length is >= the length of the active edge. If so, + then we set the active point to follow the path. + +Then we repeat until S(i) equals the terminating symbol. diff --git a/suffix tree/suffix tree test ground.txt b/suffix tree/suffix tree test ground.txt new file mode 100644 index 0000000..e566bf7 --- /dev/null +++ b/suffix tree/suffix tree test ground.txt @@ -0,0 +1,145 @@ +suffix tree for "aabbccba$" +root + a + bbccba$ + abbccba$ + $ + b + ccba$ + bccba$ + a$ + c + ba$ + cba$ + $ + + + +suffix tree for "durand-bongo-play-previous-or-last" +root + d + -bongo-play-previous-or-last + urand-bongo-play-previous-or-last + u + s-or-last + rand-bongo-play-previous-or-last + r + evious-or-last + and-bongo-play-previous-or-last + -last + a + y-previous-or-last + nd-bongo-play-previous-or-last + st + n + go-play-previous-or-last + d-bongo-play-previous-or-last + - + p + revious-or-last + lay-previous-or-last + bongo-play-previous-or-last + or-last + last + bongo-play-previous-or-last + o + -play-previous-or-last + ngo-play-previous-or-last + us-or-last + r-last + go-play-previous-or-last + p + revious-or-last + lay-previous-or-last + la + st + y-previous-or-last + y-previous-or-last + evious-or-last + vious-or-last + ious-or-last + s + t + -or-last + t + + + +suffix tree for strings: aaaaa$ +root + a + $ + a + $ + a + $ + a + $ + a$ + $ + + + +suffix tree for strings: aaaaabbb$ +root + a + bbb$ + a + bbb$ + a + bbb$ + a + bbb$ + abbb$ + b + $ + b + $ + b$ + $ + + + +Generalized suffix tree for: abab, baba: +root + a + $ (1 : 3) + b + $ (0 : 2) + a + $ (1 : 1) + b$ (0 : 0) + b + $ (0 : 3) + a + $ (1 : 2) + b + a$ (1 : 0) + $ (0 : 1) + $ (1 : 4)$ (0 : 4) + + + +Generalized suffix tree for: abab, baba, cbabd: +root + a + $ (1 : 3) + b + $ (0 : 2) + a + $ (1 : 1) + b$ (0 : 0) + d$ (2 : 2) + b + $ (0 : 3) + a + $ (1 : 2) + b + a$ (1 : 0) + $ (0 : 1) + d$ (2 : 1) + d$ (2 : 3) + $ (2 : 5)$ (1 : 4)$ (0 : 4) + cbabd$ (2 : 0) + d$ (2 : 4) + diff --git a/suffix tree/suffix-tree files.zip b/suffix tree/suffix-tree files.zip Binary files differnew file mode 100644 index 0000000..946352b --- /dev/null +++ b/suffix tree/suffix-tree files.zip diff --git a/suffix tree/suffix-tree.el b/suffix tree/suffix-tree.el new file mode 100644 index 0000000..0d929d0 --- /dev/null +++ b/suffix tree/suffix-tree.el @@ -0,0 +1,397 @@ +;;; suffiex-tree.el --- Ukkonen algorithm for building a suffix tree -*- lexical-binding: t; -*- + +;;; Author: Durand +;;; Version: 0.0.1 + +;;; Commentary: + +;; Our node is represented as a list of the following elements: + +;; start , which is the starting index of the edge going from its parent +;; node to this node +;; end , the index of the end of the above edge +;; suffix-link, the index of the node this node's suffix-link points to +;; children , a hash-table of pairs of integers and indices of its +;; children + +;; To compute the length of the edge going into NODE we use: +;; (- (min end (1+ position)) start) +;; which is actually how far the position is on that edge, +;; if it is on that edge. + +;;; Code: + +;;;###autoload +(defun st-min (&rest args) + "Return the minimum among ARGS. +If an argument is 'infty, then it is considered greater than +every number." + (apply #'min (delq nil + (mapcar + (lambda (arg) + (cond + ((number-or-marker-p arg) arg) + ((eq arg 'infty) nil))) + args)))) + +;;;###autoload +(defun st-edge-length (node position) + "Return the length of the edge into NODE. +See the comment above this function for the reason +POSITION is here." + (- (st-min (car (cdr node)) (1+ position)) + (car node))) + +;;;###autoload +(defun st-new-node (tree last-added start &optional end) + "Make a new node with START and END as the coming edge. +Then add the new node to TREE. +LAST-ADDED is the number of elements already in the TREE." + (let* ((end (or end 'infty) ;; 'infty represents the index of a leaf + ) + (suffix-link 0) ;; The suffix link is initially 0 + (new-node + (list start end + suffix-link + (make-hash-table)))) + (puthash (1+ last-added) new-node tree) + (1+ last-added))) + +;;;###autoload +(defun st-add-suffix-link (tree need-sl node) + "If NEED-SL is positive, then add the suffix link. +In particular, the node corresponding to NEED-SL in TREE +gets a suffix link pointing to NODE. + +This always returns NODE." + (cond + ((and (> need-sl 1) (/= need-sl node)) + (setcar (cdr (cdr (gethash need-sl tree))) node))) + node) + +;;;###autoload +(defun st-canonize (tree node position active-edge-index active-length active-node) + "Walk down TREE to find the correct active point." + (let ((node-edge-length (st-edge-length (gethash node tree) position))) + (cond + ((>= active-length node-edge-length) + (list t + (+ active-edge-index + node-edge-length) + (- active-length + node-edge-length) + node)) + (t + (list nil + active-edge-index + active-length + active-node))))) + +;;;###autoload +(defun st-extend-tree (tree last-added position remain + active-node active-edge-index + active-length character str) + "Extend a tree by CHARACTER. +The return value is +(tree last-added remain active-node + active-edge-index active-length)" + (let* ((need-sl 0) + (remain (1+ remain)) + continue-p breakp) + (while (and (not breakp) (> remain 0)) + (setq continue-p nil breakp nil) + (cond + ((= active-length 0) + (setq active-edge-index position))) + (let* ((actual-node (gethash active-node tree)) + (nxt (cond + (actual-node + (gethash (aref str active-edge-index) + (cadr (cdr (cdr actual-node)))))))) + (cond + ((null nxt) + (let ((leaf (st-new-node tree last-added position))) + (setq last-added leaf) + (puthash (aref str active-edge-index) + leaf + (cadr (cdr (cdr (gethash active-node tree))))) + (setq need-sl (st-add-suffix-link tree need-sl active-node))) + ;; rule 2 + ) + (t + (let* ((result (st-canonize + tree nxt position active-edge-index + active-length active-node))) + (cond + ((car result) + ;; observation 2 + (setq active-edge-index (cadr result)) + (setq active-length (caddr result)) + (setq active-node (cadr (cddr result))) + (setq continue-p t)) + (t + (cond + ((eq (aref str (+ active-length + (car (gethash nxt tree)))) + character) + ;; observation 1 + (setq active-length (1+ active-length)) + (setq need-sl (st-add-suffix-link tree need-sl active-node)) + (setq breakp t))) + (cond + (breakp) + (t ;; splitting + (let ((split (st-new-node + tree last-added (car (gethash nxt tree)) + (+ (car (gethash nxt tree)) active-length)))) + (setq last-added split) + (puthash + (aref str active-edge-index) + split (cadr (cdr (cdr (gethash active-node tree))))) + (let ((leaf (st-new-node tree last-added position))) + (setq last-added leaf) + (puthash character leaf + (cadddr (gethash split tree))) + (setcar (gethash nxt tree) + (+ (car (gethash nxt tree)) + active-length)) + (puthash (aref str (car (gethash nxt tree))) nxt + (cadddr (gethash split tree))) + ;; rule 2 + (setq need-sl + (st-add-suffix-link tree need-sl split))))))))))) + (cond + ((or continue-p breakp)) + (t + (setq remain (1- remain)) + (cond + ((and (eq active-node 1) ; root + (> active-length 0)) + (setq active-length (1- active-length)) + (setq active-edge-index + (1+ (- position remain)))) + (t + (setq active-node + (let ((slink (caddr (gethash active-node tree)))) + (cond + ((> slink 1) slink) + ; or root + (t 1)))))))))) + (list tree last-added remain active-node + active-edge-index active-length))) + +;;;###autoload +(defun st-build-for-str (str) + "Build the suffix tree for STR." + (let* ((position 0) + (character (ignore-error 'error (aref str position))) + (tree (make-hash-table)) + (last-added 0) + (remain 0) + (active-node (st-new-node tree last-added -1 -1)) + (active-edge-index 0) + (active-length 0) + result) + (setq last-added active-node) + (while character + (setq result (st-extend-tree tree last-added position remain + active-node active-edge-index + active-length character str)) + (setq tree (pop result)) + (setq last-added (pop result)) + (setq remain (pop result)) + (setq active-node (pop result)) + (setq active-edge-index (pop result)) + (setq active-length (pop result)) + (setq position (1+ position)) + (setq character (ignore-error 'error (aref str position)))) + tree)) + +;;; Some printing functions + +(require 'hierarchy) + +;;;###autoload +(defun st-print-str (str) + "Print generalized string" + (mapc (lambda (char) + (cond ((characterp char) (insert char)) + (t (insert ", ")))) + str)) + +;;;###autoload +(defun st-print-tree-for-str (str) + "Print the suffix tree for STR." + (let* ((symbol (make-symbol "test"))) + (set symbol (st-build-for-str str)) + (insert "suffix tree for strings: ") + (st-print-str str) + (insert "\n") + (st-print-tree (symbol-value symbol) str))) + +;;;###autoload +(defun st-reduce-index (node strs) + "Reduce the second element of the NODE." + (let* ((lengths (mapcar #'length strs)) + (start (car node)) + (end (cadr node)) + (first-greater-than-start + (let ((sum -1) (index 0) done result) + (while (and (not done) (< index (length strs))) + (cond + ((<= (+ sum (nth index lengths)) start) + (setq index (1+ index)) + (setq sum (+ sum (nth index lengths)))) + (t (setq result (+ sum (nth index lengths))) + (setq done t)))) + (cond ((null result) (setq result (1- (apply #'+ lengths))))) + result))) + (st-min end first-greater-than-start)) + ;; (let* ((start (car node)) + ;; (end (cadr node)) + ;; (index start) + ;; result stop) + ;; (while (and (not stop) (or (eq end 'infty) (<= index end))) + ;; (cond + ;; ((and (< index (length str)) (characterp (aref str index))) (setq index (1+ index))) + ;; (t (setq stop t) + ;; (setq result index)))) + ;; (cond ((and (numberp end) (= index (1+ end))) (setq result end))) + ;; (cond ((<= result start) (setq result 'end))) + ;; result) + ) + +;; ;;;###autoload +;; (defun st-build-generalized-tree (strs) +;; (let* ((copy strs) +;; (long-str +;; (let ((index 1) result) +;; (while (consp copy) +;; (setq result (vconcat result +;; (car copy) +;; (vector (- index)))) +;; (setq index (1+ index)) +;; (setq copy (cdr copy))) +;; result)) +;; (tree (make-symbol "tree"))) +;; (set tree (st-build-for-str long-str)))) + +;;;###autoload +(defun st-print-tree (tree str) + "Print TREE with the aid of STR." + (let* ((symbol-tree (make-symbol "test-tree"))) + (set symbol-tree (hierarchy-new)) + (maphash + (lambda (key value) + (hierarchy-add-tree + (symbol-value symbol-tree) key nil + (lambda (item) + (hash-table-values (cadr (cdr (cdr (gethash item tree)))))))) + tree) + (hierarchy-print (symbol-value symbol-tree) + (lambda (item) + (cond ((= item 1) "root") + (t (let* ((node (gethash item tree)) + ;; (reduced (st-reduce-index node str)) + ) + (substring str (car node) + (cond ((integerp (cadr node)) (cadr node)))) + ;; (cond ((eq reduced 'end) "$") + ;; (t (apply #'string + ;; (append + ;; (seq-subseq str (car node) + ;; reduced + ;; ;; (cond ((integerp (cadr node)) (cadr node))) + ;; ) + ;; nil)))) + + ;; (format "%d): (%S, %S): (%d): \"%s\"" + ;; item + ;; (car node) + ;; (cadr node) + ;; (caddr node) + ;; (substring str (car node) (cond ((integerp (cadr node)) (cadr node)))) + ;; ) + ))))))) + +(provide 'suffix-tree) +;;; suffiex-tree.el ends here + +;;; archive + +;; ;;;###autoload +;; (defvar st-root nil +;; "The root of the suffix tree.") + +;; ;;;###autoload +;; (defvar st-position nil +;; "The current position in the string.") + +;; ;;;###autoload +;; (defvar st-wait-for-link nil +;; "The node that is waiting to have a suffix link.") + +;; ;;;###autoload +;; (defvar st-remain nil +;; "The number of remaining suffixes to insert.") + +;; ;;;###autoload +;; (defvar st-active-node nil +;; "Where to insert a new suffix.") + +;; ;;;###autoload +;; (defvar st-active-edge-index nil +;; "The index of the active edge.") + +;; ;;;###autoload +;; (defvar st-active-length nil +;; "How far down is the active point down the active edge.") + +;; (insert (format "after character %c, the tree becomes\n" character)) +;; (insert (format "string is %s\n" (substring str 0 (1+ position)))) +;; (insert (format "active-node: %d\n" active-node)) +;; (insert (format "active-edge: %c\n" (aref str active-edge-index))) +;; (insert (format "active-length: %d\n" active-length)) +;; (cond ((eq last-added 11) +;; (insert (format "slink: %d\n" (caddr (gethash active-node tree)))) +;; (insert (format "con: %S" continue-p)) +;; (insert (format "breakp: %S\n" breakp)))) +;; (st-print-tree tree (substring str 0 (1+ position))) +;; (insert "\n\n") + + +;; ;;;###autoload +;; (defvar st-output-buffer-name "*suffix-tree*" +;; "The name of the buffer that contains the output.") + +;; ;;;###autoload +;; (defun st-print-tree (tree node str prefix) +;; "Print TREE in the dedicated output buffer starting at NODE. +;; PREFIX is used to recursively call this function. + +;; We need STR since the information we stored in the tree +;; only contains the index into STR, +;; for the sake of optimizations." +;; (with-temp-buffer-window st-output-buffer-name '((display-buffer-at-bottom)) nil +;; (st-print-tree-internal tree node str prefix))) + +;; ;;;###autoload +;; (defun st-print-tree-internal (tree node str prefix) +;; "The function that really prints out the data." +;; (let* ((node-data (gethash node tree)) +;; (start (car node-data)) +;; (end (cadr node-data)) +;; (edges (cdddr node-data)) +;; (node-num (format "(%d)" node)) +;; (node-label (format "%s-%s-%s" +;; prefix node-num +;; (substring str start end)))) +;; (prin1 node-label) +;; ;; print the first edge +;; (let* ((prefix-base (concat +;; prefix +;; (make-string (length node-label) 32))) +;; ;; TODO +;; )))) + + |