tigersoldier / company-lsp

Company completion backend for lsp-mode
GNU General Public License v3.0
251 stars 26 forks source link

Default for new ”match candidate predicate” feature breaks functionality for Elixir #114

Closed kek closed 5 years ago

kek commented 5 years ago

Hi, thanks for making company-lsp.

I don’t know if this should be called a bug or support request, or whatever, but I thought you might want to know regardless.

It seems that a recent update to company-lsp did introduce a default that broke some functionality for Elixir code. I haven’t tested it with other languages.

I discovered that when updating company-lsp from afef816b to cf4e1709 via MELPA, Emacs now refused to give any completing candidates after typing Enum. (but would after Enum.c, for example). By doing a lot of git bisect :joy_cat: I found that there was a new feature and a configuration introduced in 8392b9ec that caused this behaviour.

I ”fixed” it by adding (setq company-lsp-match-candidate-predicate #'company-lsp-match-candidate-prefix) to my .emacs. The value can also be changed through the customization UI, but it doesn’t seem to be persisted for some reason.

tigersoldier commented 5 years ago

Hmmm not sure why it breaks Elixir. Flex match should produce more results, not less.

Can you run M-x company-diag after Enum. and paste the output here?

kek commented 5 years ago

When company-lsp-match-candidate-predicate is set to company-lsp-match-candidate-flex, the output of company-diag is

Emacs 26.1 (x86_64-apple-darwin14.5.0) of 2018-05-31 on builder10-10.porkrind.org
Company 0.9.10

company-backends: (company-lsp company-go company-ghc company-elm company-web-html company-bbdb company-eclim company-semantic company-clang company-xcode company-cmake company-capf company-files
             (company-dabbrev-code company-gtags company-etags company-keywords)
             company-oddmuse company-dabbrev company-abbrev)

Used backend: company-lsp
Major mode: elixir-mode
Prefix: ("" . t)

Completions: none

When company-lsp-match-candidate-predicate is set to company-lsp-match-candidate-prefix, the output is

Emacs 26.1 (x86_64-apple-darwin14.5.0) of 2018-05-31 on builder10-10.porkrind.org
Company 0.9.10

company-backends: (company-lsp company-go company-ghc company-elm company-web-html company-bbdb company-eclim company-semantic company-clang company-xcode company-cmake company-capf company-files
             (company-dabbrev-code company-gtags company-etags company-keywords)
             company-oddmuse company-dabbrev company-abbrev)

Used backend: company-lsp
Major mode: elixir-mode
Prefix: ("" . t)

Completions:
  #("EmptyError" 0 10 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "exception" "documentation" "" "filterText" "EmptyError" "insertText" "EmptyError" "insertTextFormat" 1 "kind" 9 "label" "EmptyError" "sortText" "00000000")))) " exception (Module)"
  #("OutOfBoundsError" 0 16 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "exception" "documentation" "" "filterText" "OutOfBoundsError" "insertText" "OutOfBoundsError" "insertTextFormat" 1 "kind" 9 "label" "OutOfBoundsError" "sortText" "00000001")))) " exception (Module)"
  #("all?(enumerable,fun \\\\ fn x -> x end)" 0 37 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec all?(t, (element -> as_boolean(term))) :: boolean" "documentation" "Returns `true` if `fun.(element)` is truthy for all elements in `enumerable`." "insertText" "all?()" "insertTextFormat" 1 "kind" 3 "label" "all?(enumerable,fun \\\\ fn x -> x end)" "sortText" "00000002")))) " @spec all?(t, (element -> as_boolean(term))) :: boolean (Function)"
  #("any?(enumerable,fun \\\\ fn x -> x end)" 0 37 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec any?(t, (element -> as_boolean(term))) :: boolean" "documentation" "Returns `true` if `fun.(element)` is truthy for at least one element in `enumerable`." "insertText" "any?()" "insertTextFormat" 1 "kind" 3 "label" "any?(enumerable,fun \\\\ fn x -> x end)" "sortText" "00000003")))) " @spec any?(t, (element -> as_boolean(term))) :: boolean (Function)"
  #("at(enumerable,index,default \\\\ nil)" 0 35 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec at(t, index, default) :: element | default" "documentation" "Finds the element at the given `index` (zero-based)." "insertText" "at()" "insertTextFormat" 1 "kind" 3 "label" "at(enumerable,index,default \\\\ nil)" "sortText" "00000004")))) " @spec at(t, index, default) :: element | default (Function)"
  #("chunk(enum,n,step)" 0 18 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "(Enum) function" "documentation" "" "insertText" "chunk()" "insertTextFormat" 1 "kind" 3 "label" "chunk(enum,n,step)" "sortText" "00000005")))) " (Enum) function (Function)"
  #("chunk(enumerable,count)" 0 23 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "(Enum) function" "documentation" "" "insertText" "chunk()" "insertTextFormat" 1 "kind" 3 "label" "chunk(enumerable,count)" "sortText" "00000006")))) " (Enum) function (Function)"
  #("chunk(enumerable,count,step,leftover)" 0 37 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "(Enum) function" "documentation" "" "insertText" "chunk()" "insertTextFormat" 1 "kind" 3 "label" "chunk(enumerable,count,step,leftover)" "sortText" "00000007")))) " (Enum) function (Function)"
  #("chunk_by(enumerable,fun)" 0 24 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec chunk_by(t, (element -> any)) :: [list]" "documentation" "Splits enumerable on every element for which `fun` returns a new
value." "insertText" "chunk_by()" "insertTextFormat" 1 "kind" 3 "label" "chunk_by(enumerable,fun)" "sortText" "00000008")))) " @spec chunk_by(t, (element -> any)) :: [list] (Function)"
  #("chunk_every(enumerable,count)" 0 29 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec chunk_every(t, pos_integer) :: [list]" "documentation" "Shortcut to `chunk_every(enumerable, count, count)`.
" "insertText" "chunk_every()" "insertTextFormat" 1 "kind" 3 "label" "chunk_every(enumerable,count)" "sortText" "00000009")))) " @spec chunk_every(t, pos_integer) :: [list] (Function)"
  #("chunk_every(enumerable,count,step,leftover \\\\ [])" 0 49 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec chunk_every(t, pos_integer, pos_integer, t | :discard) :: [list]" "documentation" "Returns list of lists containing `count` elements each, where
each new chunk starts `step` elements into the `enumerable`." "insertText" "chunk_every()" "insertTextFormat" 1 "kind" 3 "label" "chunk_every(enumerable,count,step,leftover \\\\ [])" "sortText" "00000010")))) " @spec chunk_every(t, pos_integer, pos_integer, t | :discard) :: [list] (Function)"
  #("chunk_while(enumerable,acc,chunk_fun,after_fun)" 0 47 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec chunk_while(t, acc, (element, acc -> {:cont, chunk, acc} | {:cont, acc} | {:halt, acc}), (acc -> {:cont, chunk, acc} | {:cont, acc})) :: Enumerable.t when chunk: any" "documentation" "Chunks the `enumerable` with fine grained control when every chunk is emitted." "insertText" "chunk_while()" "insertTextFormat" 1 "kind" 3 "label" "chunk_while(enumerable,acc,chunk_fun,after_fun)" "sortText" "00000011")))) " @spec chunk_while(t, acc, (element, acc -> {:cont, chunk, acc} | {:cont, acc} | {:halt, acc}), (acc -> {:cont, chunk, acc} | {:cont, acc})) :: Enumerable.t when chunk: any (Function)"
  #("concat(enumerables)" 0 19 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec concat(t) :: t" "documentation" "Given an enumerable of enumerables, concatenates the `enumerables` into
a single list." "insertText" "concat()" "insertTextFormat" 1 "kind" 3 "label" "concat(enumerables)" "sortText" "00000012")))) " @spec concat(t) :: t (Function)"
  #("concat(left,right)" 0 18 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec concat(t, t) :: t" "documentation" "Concatenates the enumerable on the `right` with the enumerable on the
`left`." "insertText" "concat()" "insertTextFormat" 1 "kind" 3 "label" "concat(left,right)" "sortText" "00000013")))) " @spec concat(t, t) :: t (Function)"
  #("count(enumerable)" 0 17 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec count(t) :: non_neg_integer" "documentation" "Returns the size of the `enumerable`." "insertText" "count()" "insertTextFormat" 1 "kind" 3 "label" "count(enumerable)" "sortText" "00000014")))) " @spec count(t) :: non_neg_integer (Function)"
  #("count(enumerable,fun)" 0 21 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec count(t, (element -> as_boolean(term))) :: non_neg_integer" "documentation" "Returns the count of elements in the `enumerable` for which `fun` returns
a truthy value." "insertText" "count()" "insertTextFormat" 1 "kind" 3 "label" "count(enumerable,fun)" "sortText" "00000015")))) " @spec count(t, (element -> as_boolean(term))) :: non_neg_integer (Function)"
  #("dedup(enumerable)" 0 17 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec dedup(t) :: list" "documentation" "Enumerates the `enumerable`, returning a list where all consecutive
duplicated elements are collapsed to a single element." "insertText" "dedup()" "insertTextFormat" 1 "kind" 3 "label" "dedup(enumerable)" "sortText" "00000016")))) " @spec dedup(t) :: list (Function)"
  #("dedup_by(enumerable,fun)" 0 24 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec dedup_by(t, (element -> term)) :: list" "documentation" "Enumerates the `enumerable`, returning a list where all consecutive
duplicated elements are collapsed to a single element." "insertText" "dedup_by()" "insertTextFormat" 1 "kind" 3 "label" "dedup_by(enumerable,fun)" "sortText" "00000017")))) " @spec dedup_by(t, (element -> term)) :: list (Function)"
  #("drop(enumerable,amount)" 0 23 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec drop(t, integer) :: list" "documentation" "Drops the `amount` of elements from the `enumerable`." "insertText" "drop()" "insertTextFormat" 1 "kind" 3 "label" "drop(enumerable,amount)" "sortText" "00000018")))) " @spec drop(t, integer) :: list (Function)"
  #("drop_every(enumerable,nth)" 0 26 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec drop_every(t, non_neg_integer) :: list" "documentation" "Returns a list of every `nth` element in the `enumerable` dropped,
starting with the first element." "insertText" "drop_every()" "insertTextFormat" 1 "kind" 3 "label" "drop_every(enumerable,nth)" "sortText" "00000019")))) " @spec drop_every(t, non_neg_integer) :: list (Function)"
  #("drop_while(enumerable,fun)" 0 26 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec drop_while(t, (element -> as_boolean(term))) :: list" "documentation" "Drops elements at the beginning of the `enumerable` while `fun` returns a
truthy value." "insertText" "drop_while()" "insertTextFormat" 1 "kind" 3 "label" "drop_while(enumerable,fun)" "sortText" "00000020")))) " @spec drop_while(t, (element -> as_boolean(term))) :: list (Function)"
  #("each(enumerable,fun)" 0 20 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec each(t, (element -> any)) :: :ok" "documentation" "Invokes the given `fun` for each element in the `enumerable`." "insertText" "each()" "insertTextFormat" 1 "kind" 3 "label" "each(enumerable,fun)" "sortText" "00000021")))) " @spec each(t, (element -> any)) :: :ok (Function)"
  #("empty?(enumerable)" 0 18 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec empty?(t) :: boolean" "documentation" "Determines if the `enumerable` is empty." "insertText" "empty?()" "insertTextFormat" 1 "kind" 3 "label" "empty?(enumerable)" "sortText" "00000022")))) " @spec empty?(t) :: boolean (Function)"
  #("fetch!(enumerable,index)" 0 24 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec fetch!(t, index) :: element" "documentation" "Finds the element at the given `index` (zero-based)." "insertText" "fetch!()" "insertTextFormat" 1 "kind" 3 "label" "fetch!(enumerable,index)" "sortText" "00000023")))) " @spec fetch!(t, index) :: element (Function)"
  #("fetch(enumerable,index)" 0 23 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec fetch(t, index) :: {:ok, element} | :error" "documentation" "Finds the element at the given `index` (zero-based)." "insertText" "fetch()" "insertTextFormat" 1 "kind" 3 "label" "fetch(enumerable,index)" "sortText" "00000024")))) " @spec fetch(t, index) :: {:ok, element} | :error (Function)"
  #("filter(enumerable,fun)" 0 22 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec filter(t, (element -> as_boolean(term))) :: list" "documentation" "Filters the `enumerable`, i.e. returns only those elements
for which `fun` returns a truthy value." "insertText" "filter()" "insertTextFormat" 1 "kind" 3 "label" "filter(enumerable,fun)" "sortText" "00000025")))) " @spec filter(t, (element -> as_boolean(term))) :: list (Function)"
  #("filter_map(enumerable,filter,mapper)" 0 36 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "(Enum) function" "documentation" "" "insertText" "filter_map()" "insertTextFormat" 1 "kind" 3 "label" "filter_map(enumerable,filter,mapper)" "sortText" "00000026")))) " (Enum) function (Function)"
  #("find(enumerable,default \\\\ nil,fun)" 0 35 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec find(t, default, (element -> any)) :: element | default" "documentation" "Returns the first element for which `fun` returns a truthy value.
If no such element is found, returns `default`." "insertText" "find()" "insertTextFormat" 1 "kind" 3 "label" "find(enumerable,default \\\\ nil,fun)" "sortText" "00000027")))) " @spec find(t, default, (element -> any)) :: element | default (Function)"
  #("find_index(enumerable,fun)" 0 26 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec find_index(t, (element -> any)) :: non_neg_integer | nil" "documentation" "Similar to `find/3`, but returns the index (zero-based)
of the element instead of the element itself." "insertText" "find_index()" "insertTextFormat" 1 "kind" 3 "label" "find_index(enumerable,fun)" "sortText" "00000028")))) " @spec find_index(t, (element -> any)) :: non_neg_integer | nil (Function)"
  #("find_value(enumerable,default \\\\ nil,fun)" 0 41 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec find_value(t, any, (element -> any)) :: any | nil" "documentation" "Similar to `find/3`, but returns the value of the function
invocation instead of the element itself." "insertText" "find_value()" "insertTextFormat" 1 "kind" 3 "label" "find_value(enumerable,default \\\\ nil,fun)" "sortText" "00000029")))) " @spec find_value(t, any, (element -> any)) :: any | nil (Function)"
  #("flat_map(enumerable,fun)" 0 24 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec flat_map(t, (element -> t)) :: list" "documentation" "Maps the given `fun` over `enumerable` and flattens the result." "insertText" "flat_map()" "insertTextFormat" 1 "kind" 3 "label" "flat_map(enumerable,fun)" "sortText" "00000030")))) " @spec flat_map(t, (element -> t)) :: list (Function)"
  #("flat_map_reduce(enumerable,acc,fun)" 0 35 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec flat_map_reduce(t, acc, fun) :: {[any], acc} when fun: (element, acc -> {t, acc} | {:halt, acc})" "documentation" "Maps and reduces an `enumerable`, flattening the given results (only one level deep)." "insertText" "flat_map_reduce()" "insertTextFormat" 1 "kind" 3 "label" "flat_map_reduce(enumerable,acc,fun)" "sortText" "00000031")))) " @spec flat_map_reduce(t, acc, fun) :: {[any], acc} when fun: (element, acc -> {t, acc} | {:halt, acc}) (Function)"
  #("group_by(enumerable,key_fun,value_fun \\\\ fn x -> x end)" 0 55 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec group_by(t, (element -> any), (element -> any)) :: map" "documentation" "Splits the `enumerable` into groups based on `key_fun`." "insertText" "group_by()" "insertTextFormat" 1 "kind" 3 "label" "group_by(enumerable,key_fun,value_fun \\\\ fn x -> x end)" "sortText" "00000032")))) " @spec group_by(t, (element -> any), (element -> any)) :: map (Function)"
  #("intersperse(enumerable,element)" 0 31 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec intersperse(t, element) :: list" "documentation" "Intersperses `element` between each element of the enumeration." "insertText" "intersperse()" "insertTextFormat" 1 "kind" 3 "label" "intersperse(enumerable,element)" "sortText" "00000033")))) " @spec intersperse(t, element) :: list (Function)"
  #("into(enumerable,collectable)" 0 28 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec into(Enumerable.t, Collectable.t) :: Collectable.t" "documentation" "Inserts the given `enumerable` into a `collectable`." "insertText" "into()" "insertTextFormat" 1 "kind" 3 "label" "into(enumerable,collectable)" "sortText" "00000034")))) " @spec into(Enumerable.t, Collectable.t) :: Collectable.t (Function)"
  #("into(enumerable,collectable,transform)" 0 38 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec into(Enumerable.t, Collectable.t, (term -> term)) :: Collectable.t" "documentation" "Inserts the given `enumerable` into a `collectable` according to the
transformation function." "insertText" "into()" "insertTextFormat" 1 "kind" 3 "label" "into(enumerable,collectable,transform)" "sortText" "00000035")))) " @spec into(Enumerable.t, Collectable.t, (term -> term)) :: Collectable.t (Function)"
  #("join(enumerable,joiner \\\\ \"\")" 0 29 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec join(t, String.t) :: String.t" "documentation" "Joins the given `enumerable` into a binary using `joiner` as a
separator." "insertText" "join()" "insertTextFormat" 1 "kind" 3 "label" "join(enumerable,joiner \\\\ \"\")" "sortText" "00000036")))) " @spec join(t, String.t) :: String.t (Function)"
  #("map(enumerable,fun)" 0 19 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec map(t, (element -> any)) :: list" "documentation" "Returns a list where each element is the result of invoking
`fun` on each corresponding element of `enumerable`." "insertText" "map()" "insertTextFormat" 1 "kind" 3 "label" "map(enumerable,fun)" "sortText" "00000037")))) " @spec map(t, (element -> any)) :: list (Function)"
  #("map_every(enumerable,nth,fun)" 0 29 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec map_every(t, non_neg_integer, (element -> any)) :: list" "documentation" "Returns a list of results of invoking `fun` on every `nth`
element of `enumerable`, starting with the first element." "insertText" "map_every()" "insertTextFormat" 1 "kind" 3 "label" "map_every(enumerable,nth,fun)" "sortText" "00000038")))) " @spec map_every(t, non_neg_integer, (element -> any)) :: list (Function)"
  #("map_join(enumerable,joiner \\\\ \"\",mapper)" 0 40 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec map_join(t, String.t, (element -> String.Chars.t)) :: String.t" "documentation" "Maps and joins the given `enumerable` in one pass." "insertText" "map_join()" "insertTextFormat" 1 "kind" 3 "label" "map_join(enumerable,joiner \\\\ \"\",mapper)" "sortText" "00000039")))) " @spec map_join(t, String.t, (element -> String.Chars.t)) :: String.t (Function)"
  #("map_reduce(enumerable,acc,fun)" 0 30 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec map_reduce(t, acc, (element, acc -> {element, acc})) :: {list, acc}" "documentation" "Invokes the given function to each element in the `enumerable` to reduce
it to a single element, while keeping an accumulator." "insertText" "map_reduce()" "insertTextFormat" 1 "kind" 3 "label" "map_reduce(enumerable,acc,fun)" "sortText" "00000040")))) " @spec map_reduce(t, acc, (element, acc -> {element, acc})) :: {list, acc} (Function)"
  #("max(enumerable,empty_fallback \\\\ fn -> raise(Enum.EmptyError) end)" 0 66 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec max(t, ( -> empty_result)) :: element | empty_result when empty_result: any" "documentation" "Returns the maximal element in the `enumerable` according
to Erlang's term ordering." "insertText" "max()" "insertTextFormat" 1 "kind" 3 "label" "max(enumerable,empty_fallback \\\\ fn -> raise(Enum.EmptyError) end)" "sortText" "00000041")))) " @spec max(t, ( -> empty_result)) :: element | empty_result when empty_result: any (Function)"
  #("max_by(enumerable,fun,empty_fallback \\\\ fn -> raise(Enum.EmptyError) end)" 0 73 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec max_by(t, (element -> any), ( -> empty_result)) :: element | empty_result when empty_result: any" "documentation" "Returns the maximal element in the `enumerable` as calculated
by the given function." "insertText" "max_by()" "insertTextFormat" 1 "kind" 3 "label" "max_by(enumerable,fun,empty_fallback \\\\ fn -> raise(Enum.EmptyError) end)" "sortText" "00000042")))) " @spec max_by(t, (element -> any), ( -> empty_result)) :: element | empty_result when empty_result: any (Function)"
  #("member?(enumerable,element)" 0 27 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec member?(t, element) :: boolean" "documentation" "Checks if `element` exists within the `enumerable`." "insertText" "member?()" "insertTextFormat" 1 "kind" 3 "label" "member?(enumerable,element)" "sortText" "00000043")))) " @spec member?(t, element) :: boolean (Function)"
  #("min(enumerable,empty_fallback \\\\ fn -> raise(Enum.EmptyError) end)" 0 66 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec min(t, ( -> empty_result)) :: element | empty_result when empty_result: any" "documentation" "Returns the minimal element in the `enumerable` according
to Erlang's term ordering." "insertText" "min()" "insertTextFormat" 1 "kind" 3 "label" "min(enumerable,empty_fallback \\\\ fn -> raise(Enum.EmptyError) end)" "sortText" "00000044")))) " @spec min(t, ( -> empty_result)) :: element | empty_result when empty_result: any (Function)"
  #("min_by(enumerable,fun,empty_fallback \\\\ fn -> raise(Enum.EmptyError) end)" 0 73 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec min_by(t, (element -> any), ( -> empty_result)) :: element | empty_result when empty_result: any" "documentation" "Returns the minimal element in the `enumerable` as calculated
by the given function." "insertText" "min_by()" "insertTextFormat" 1 "kind" 3 "label" "min_by(enumerable,fun,empty_fallback \\\\ fn -> raise(Enum.EmptyError) end)" "sortText" "00000045")))) " @spec min_by(t, (element -> any), ( -> empty_result)) :: element | empty_result when empty_result: any (Function)"
  #("min_max(enumerable,empty_fallback \\\\ fn -> raise(Enum.EmptyError) end)" 0 70 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec min_max(t, ( -> empty_result)) :: {element, element} | empty_result when empty_result: any" "documentation" "Returns a tuple with the minimal and the maximal elements in the
enumerable according to Erlang's term ordering." "insertText" "min_max()" "insertTextFormat" 1 "kind" 3 "label" "min_max(enumerable,empty_fallback \\\\ fn -> raise(Enum.EmptyError) end)" "sortText" "00000046")))) " @spec min_max(t, ( -> empty_result)) :: {element, element} | empty_result when empty_result: any (Function)"
  #("min_max_by(enumerable,fun,empty_fallback \\\\ fn -> raise(Enum.EmptyError) end)" 0 77 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec min_max_by(t, (element -> any), ( -> empty_result)) :: {element, element} | empty_result when empty_result: any" "documentation" "Returns a tuple with the minimal and the maximal elements in the
enumerable as calculated by the given function." "insertText" "min_max_by()" "insertTextFormat" 1 "kind" 3 "label" "min_max_by(enumerable,fun,empty_fallback \\\\ fn -> raise(Enum.EmptyError) end)" "sortText" "00000047")))) " @spec min_max_by(t, (element -> any), ( -> empty_result)) :: {element, element} | empty_result when empty_result: any (Function)"
  #("module_info/0" 0 13 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "(Enum) function" "documentation" "" "insertText" "module_info()" "insertTextFormat" 1 "kind" 3 "label" "module_info/0" "sortText" "00000048")))) " (Enum) function (Function)"
  #("module_info/1" 0 13 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "(Enum) function" "documentation" "" "insertText" "module_info()" "insertTextFormat" 1 "kind" 3 "label" "module_info/1" "sortText" "00000049")))) " (Enum) function (Function)"
  #("partition(enumerable,fun)" 0 25 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "(Enum) function" "documentation" "" "insertText" "partition()" "insertTextFormat" 1 "kind" 3 "label" "partition(enumerable,fun)" "sortText" "00000050")))) " (Enum) function (Function)"
  #("random(enumerable)" 0 18 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec random(t) :: element" "documentation" "Returns a random element of an `enumerable`." "insertText" "random()" "insertTextFormat" 1 "kind" 3 "label" "random(enumerable)" "sortText" "00000051")))) " @spec random(t) :: element (Function)"
  #("reduce(enumerable,acc,fun)" 0 26 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec reduce(t, any, (element, any -> any)) :: any" "documentation" "Invokes `fun` for each element in the `enumerable` with the accumulator." "insertText" "reduce()" "insertTextFormat" 1 "kind" 3 "label" "reduce(enumerable,acc,fun)" "sortText" "00000052")))) " @spec reduce(t, any, (element, any -> any)) :: any (Function)"
  #("reduce(enumerable,fun)" 0 22 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec reduce(t, (element, acc -> acc)) :: acc" "documentation" "Invokes `fun` for each element in the `enumerable` with the
accumulator." "insertText" "reduce()" "insertTextFormat" 1 "kind" 3 "label" "reduce(enumerable,fun)" "sortText" "00000053")))) " @spec reduce(t, (element, acc -> acc)) :: acc (Function)"
  #("reduce_while(enumerable,acc,fun)" 0 32 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec reduce_while(t, any, (element, any -> {:cont, any} | {:halt, any})) :: any" "documentation" "Reduces `enumerable` until `fun` returns `{:halt, term}`." "insertText" "reduce_while()" "insertTextFormat" 1 "kind" 3 "label" "reduce_while(enumerable,acc,fun)" "sortText" "00000054")))) " @spec reduce_while(t, any, (element, any -> {:cont, any} | {:halt, any})) :: any (Function)"
  #("reject(enumerable,fun)" 0 22 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec reject(t, (element -> as_boolean(term))) :: list" "documentation" "Returns a list of elements in `enumerable` excluding those for which the function `fun` returns
a truthy value." "insertText" "reject()" "insertTextFormat" 1 "kind" 3 "label" "reject(enumerable,fun)" "sortText" "00000055")))) " @spec reject(t, (element -> as_boolean(term))) :: list (Function)"
  #("reverse(enumerable)" 0 19 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec reverse(t) :: list" "documentation" "Returns a list of elements in `enumerable` in reverse order." "insertText" "reverse()" "insertTextFormat" 1 "kind" 3 "label" "reverse(enumerable)" "sortText" "00000056")))) " @spec reverse(t) :: list (Function)"
  #("reverse(enumerable,tail)" 0 24 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec reverse(t, t) :: list" "documentation" "Reverses the elements in `enumerable`, appends the `tail`, and returns
it as a list." "insertText" "reverse()" "insertTextFormat" 1 "kind" 3 "label" "reverse(enumerable,tail)" "sortText" "00000057")))) " @spec reverse(t, t) :: list (Function)"
  #("reverse_slice(enumerable,start_index,count)" 0 43 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec reverse_slice(t, non_neg_integer, non_neg_integer) :: list" "documentation" "Reverses the `enumerable` in the range from initial `start_index`
through `count` elements." "insertText" "reverse_slice()" "insertTextFormat" 1 "kind" 3 "label" "reverse_slice(enumerable,start_index,count)" "sortText" "00000058")))) " @spec reverse_slice(t, non_neg_integer, non_neg_integer) :: list (Function)"
  #("scan(enumerable,acc,fun)" 0 24 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec scan(t, any, (element, any -> any)) :: list" "documentation" "Applies the given function to each element in the `enumerable`,
storing the result in a list and passing it as the accumulator
for the next computation. Uses the given `acc` as the starting value." "insertText" "scan()" "insertTextFormat" 1 "kind" 3 "label" "scan(enumerable,acc,fun)" "sortText" "00000059")))) " @spec scan(t, any, (element, any -> any)) :: list (Function)"
  #("scan(enumerable,fun)" 0 20 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec scan(t, (element, any -> any)) :: list" "documentation" "Applies the given function to each element in the `enumerable`,
storing the result in a list and passing it as the accumulator
for the next computation. Uses the first element in the `enumerable`
as the starting value." "insertText" "scan()" "insertTextFormat" 1 "kind" 3 "label" "scan(enumerable,fun)" "sortText" "00000060")))) " @spec scan(t, (element, any -> any)) :: list (Function)"
  #("shuffle(enumerable)" 0 19 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec shuffle(t) :: list" "documentation" "Returns a list with the elements of `enumerable` shuffled." "insertText" "shuffle()" "insertTextFormat" 1 "kind" 3 "label" "shuffle(enumerable)" "sortText" "00000061")))) " @spec shuffle(t) :: list (Function)"
  #("slice(enumerable,index_range)" 0 29 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec slice(t, Range.t) :: list" "documentation" "Returns a subset list of the given `enumerable` by `index_range`." "insertText" "slice()" "insertTextFormat" 1 "kind" 3 "label" "slice(enumerable,index_range)" "sortText" "00000062")))) " @spec slice(t, Range.t) :: list (Function)"
  #("slice(enumerable,start_index,amount)" 0 36 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec slice(t, index, non_neg_integer) :: list" "documentation" "Returns a subset list of the given `enumerable`, from `start_index` (zero-based)
with `amount` number of elements if available." "insertText" "slice()" "insertTextFormat" 1 "kind" 3 "label" "slice(enumerable,start_index,amount)" "sortText" "00000063")))) " @spec slice(t, index, non_neg_integer) :: list (Function)"
  #("sort(enumerable)" 0 16 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec sort(t) :: list" "documentation" "Sorts the `enumerable` according to Erlang's term ordering." "insertText" "sort()" "insertTextFormat" 1 "kind" 3 "label" "sort(enumerable)" "sortText" "00000064")))) " @spec sort(t) :: list (Function)"
  #("sort(enumerable,fun)" 0 20 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec sort(t, (element, element -> boolean)) :: list" "documentation" "Sorts the `enumerable` by the given function." "insertText" "sort()" "insertTextFormat" 1 "kind" 3 "label" "sort(enumerable,fun)" "sortText" "00000065")))) " @spec sort(t, (element, element -> boolean)) :: list (Function)"
  #("sort_by(enumerable,mapper,sorter \\\\ &<=/2)" 0 42 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec sort_by(t, (element -> mapped_element), (mapped_element, mapped_element -> boolean)) :: list when mapped_element: element" "documentation" "Sorts the mapped results of the `enumerable` according to the provided `sorter`
function." "insertText" "sort_by()" "insertTextFormat" 1 "kind" 3 "label" "sort_by(enumerable,mapper,sorter \\\\ &<=/2)" "sortText" "00000066")))) " @spec sort_by(t, (element -> mapped_element), (mapped_element, mapped_element -> boolean)) :: list when mapped_element: element (Function)"
  #("split(enumerable,count)" 0 23 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec split(t, integer) :: {list, list}" "documentation" "Splits the `enumerable` into two enumerables, leaving `count`
elements in the first one." "insertText" "split()" "insertTextFormat" 1 "kind" 3 "label" "split(enumerable,count)" "sortText" "00000067")))) " @spec split(t, integer) :: {list, list} (Function)"
  #("split_while(enumerable,fun)" 0 27 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec split_while(t, (element -> as_boolean(term))) :: {list, list}" "documentation" "Splits enumerable in two at the position of the element for which
`fun` returns a falsy value (`false` or `nil`) for the first time." "insertText" "split_while()" "insertTextFormat" 1 "kind" 3 "label" "split_while(enumerable,fun)" "sortText" "00000068")))) " @spec split_while(t, (element -> as_boolean(term))) :: {list, list} (Function)"
  #("split_with(enumerable,fun)" 0 26 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec split_with(t, (element -> as_boolean(term))) :: {list, list}" "documentation" "Splits the `enumerable` in two lists according to the given function `fun`." "insertText" "split_with()" "insertTextFormat" 1 "kind" 3 "label" "split_with(enumerable,fun)" "sortText" "00000069")))) " @spec split_with(t, (element -> as_boolean(term))) :: {list, list} (Function)"
  #("sum(enumerable)" 0 15 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec sum(t) :: number" "documentation" "Returns the sum of all elements." "insertText" "sum()" "insertTextFormat" 1 "kind" 3 "label" "sum(enumerable)" "sortText" "00000070")))) " @spec sum(t) :: number (Function)"
  #("take(enumerable,amount)" 0 23 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec take(t, integer) :: list" "documentation" "Takes an `amount` of elements from the beginning or the end of the `enumerable`." "insertText" "take()" "insertTextFormat" 1 "kind" 3 "label" "take(enumerable,amount)" "sortText" "00000071")))) " @spec take(t, integer) :: list (Function)"
  #("take_every(enumerable,nth)" 0 26 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec take_every(t, non_neg_integer) :: list" "documentation" "Returns a list of every `nth` element in the `enumerable`,
starting with the first element." "insertText" "take_every()" "insertTextFormat" 1 "kind" 3 "label" "take_every(enumerable,nth)" "sortText" "00000072")))) " @spec take_every(t, non_neg_integer) :: list (Function)"
  #("take_random(enumerable,count)" 0 29 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec take_random(t, non_neg_integer) :: list" "documentation" "Takes `count` random elements from `enumerable`." "insertText" "take_random()" "insertTextFormat" 1 "kind" 3 "label" "take_random(enumerable,count)" "sortText" "00000073")))) " @spec take_random(t, non_neg_integer) :: list (Function)"
  #("take_while(enumerable,fun)" 0 26 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec take_while(t, (element -> as_boolean(term))) :: list" "documentation" "Takes the elements from the beginning of the `enumerable` while `fun` returns
a truthy value." "insertText" "take_while()" "insertTextFormat" 1 "kind" 3 "label" "take_while(enumerable,fun)" "sortText" "00000074")))) " @spec take_while(t, (element -> as_boolean(term))) :: list (Function)"
  #("to_list(enumerable)" 0 19 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec to_list(t) :: [element]" "documentation" "Converts `enumerable` to a list." "insertText" "to_list()" "insertTextFormat" 1 "kind" 3 "label" "to_list(enumerable)" "sortText" "00000075")))) " @spec to_list(t) :: [element] (Function)"
  #("uniq(enumerable)" 0 16 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec uniq(t) :: list" "documentation" "Enumerates the `enumerable`, removing all duplicated elements." "insertText" "uniq()" "insertTextFormat" 1 "kind" 3 "label" "uniq(enumerable)" "sortText" "00000076")))) " @spec uniq(t) :: list (Function)"
  #("uniq(enumerable,fun)" 0 20 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "(Enum) function" "documentation" "" "insertText" "uniq()" "insertTextFormat" 1 "kind" 3 "label" "uniq(enumerable,fun)" "sortText" "00000077")))) " (Enum) function (Function)"
  #("uniq_by(enumerable,fun)" 0 23 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec uniq_by(t, (element -> term)) :: list" "documentation" "Enumerates the `enumerable`, by removing the elements for which
function `fun` returned duplicate elements." "insertText" "uniq_by()" "insertTextFormat" 1 "kind" 3 "label" "uniq_by(enumerable,fun)" "sortText" "00000078")))) " @spec uniq_by(t, (element -> term)) :: list (Function)"
  #("unzip(enumerable)" 0 17 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec unzip(t) :: {[element], [element]}" "documentation" "Opposite of `zip/2`. Extracts two-element tuples from the
given `enumerable` and groups them together." "insertText" "unzip()" "insertTextFormat" 1 "kind" 3 "label" "unzip(enumerable)" "sortText" "00000079")))) " @spec unzip(t) :: {[element], [element]} (Function)"
  #("with_index(enumerable,offset \\\\ 0)" 0 34 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec with_index(t, integer) :: [{element, index}]" "documentation" "Returns the `enumerable` with each element wrapped in a tuple
alongside its index." "insertText" "with_index()" "insertTextFormat" 1 "kind" 3 "label" "with_index(enumerable,offset \\\\ 0)" "sortText" "00000080")))) " @spec with_index(t, integer) :: [{element, index}] (Function)"
  #("zip(enumerable1,enumerable2)" 0 28 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec zip(t, t) :: [{any, any}]" "documentation" "Zips corresponding elements from two enumerables into one list
of tuples." "insertText" "zip()" "insertTextFormat" 1 "kind" 3 "label" "zip(enumerable1,enumerable2)" "sortText" "00000081")))) " @spec zip(t, t) :: [{any, any}] (Function)"
  #("zip(enumerables)" 0 16 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "@spec zip([t]) :: t" "documentation" "Zips corresponding elements from a finite collection of enumerables
into one list of tuples." "insertText" "zip()" "insertTextFormat" 1 "kind" 3 "label" "zip(enumerables)" "sortText" "00000082")))) " @spec zip([t]) :: t (Function)"
  #("__info__" 0 8 (lsp-completion-prefix "" lsp-completion-item #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ("detail" "(Enum) function" "documentation" "" "insertText" "__info__" "insertTextFormat" 1 "kind" 3 "label" "__info__" "sortText" "00000083")))) " (Enum) function (Function)"
tigersoldier commented 5 years ago

Should be fixed by #115. Please update from MELPA in an hour and try it.

kek commented 5 years ago

Awesome. It works perfectly now. Thanks!