From d1eec6db17f3d4f03b02f830a6ec6ae68986c89e Mon Sep 17 00:00:00 2001 From: Wu Zhenyu Date: Sun, 10 Dec 2023 10:44:53 +0800 Subject: [PATCH] :boom: Update get_completion_list_by_enum() --- README.md | 20 ++++++++------------ src/tree_sitter_lsp/complete.py | 10 +++++++--- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 5af8fb2..4fe81d9 100644 --- a/README.md +++ b/README.md @@ -37,13 +37,7 @@ [![pypi/implementation](https://shields.io/pypi/implementation/tree-sitter-lsp)](https://pypi.org/project/tree-sitter-lsp/#files) [![pypi/pyversions](https://shields.io/pypi/pyversions/tree-sitter-lsp)](https://pypi.org/project/tree-sitter-lsp/#files) -A library aimed to create language servers which connect: - -- [tree-sitter](https://tree-sitter.github.io/tree-sitter/) -- [language server protocol](https://microsoft.github.io/language-server-protocol/specifications/specification-current) -- [json schema](https://json-schema.org/specification) - -Some example language servers: +A core library to support many language servers: - [termux-language-server](https://github.com/termux/termux-language-server/): for some specific bash scripts: @@ -51,17 +45,19 @@ Some example language servers: - [`PKGBUILD`](https://wiki.archlinux.org/title/PKGBUILD) - [`*.ebuild`](https://dev.gentoo.org/~zmedico/portage/doc/man/ebuild.5.html) - ... +- [mutt-language-server](https://github.com/neomutt/mutt-language-server): + for [(neo)mutt](https://github.com/neomutt/neomutt)'s (neo)muttrc - [autotools-language-server](https://github.com/Freed-Wu/autotools-language-server/): for `Makefile` - [requirements-language-server](https://github.com/Freed-Wu/requirements-language-server/): for `requirements.txt` -- [mutt-language-server](https://github.com/neomutt/mutt-language-server): - for [(neo)mutt](https://github.com/neomutt/neomutt)'s (neo)muttrc - [zathura-language-server](https://github.com/Freed-Wu/zathura-language-server): for [zathura](https://github.com/pwmt/zathura)'s zathurarc - [bitbake-language-server](https://github.com/Freed-Wu/bitbake-language-server): for [bitbake](https://docs.yoctoproject.org/bitbake/index.html) -Read -[![readthedocs](https://shields.io/readthedocs/tree-sitter-lsp)](https://tree-sitter-lsp.readthedocs.io) -to know more. +which connect: + +- [tree-sitter](https://tree-sitter.github.io/tree-sitter/) +- [language server protocol](https://microsoft.github.io/language-server-protocol/specifications/specification-current) +- [json schema](https://json-schema.org/specification) diff --git a/src/tree_sitter_lsp/complete.py b/src/tree_sitter_lsp/complete.py index a996144..556c79c 100644 --- a/src/tree_sitter_lsp/complete.py +++ b/src/tree_sitter_lsp/complete.py @@ -21,8 +21,7 @@ def get_completion_list_by_enum( text: str, property: dict[str, Any] ) -> CompletionList: r"""Get completion list by enum. ``property.items`` must contains - ``enum`` or ``oneOf.enum``. Not ``anyOf`` or ``allOf`` because ``enum`` - shouldn't be satisfied with other conditions. + ``enum``, ``oneOf.enum``, ``anyOf.enum`` or ``allOf``. :param text: :type text: str @@ -32,7 +31,12 @@ def get_completion_list_by_enum( """ # if contains .items, it is an array property = property.get("items", property) - enum = property.get("enum", property.get("oneOf", [{}])[0].get("enum", [])) + enum = property.get( + "enum", + property.get( + "oneOf", property.get("anyOf", property.get("allOf", [{}])) + )[0].get("enum", []), + ) return CompletionList( False, [