Skip to content

Commit

Permalink
👽 Fix #17, use tree-sitter-bash
Browse files Browse the repository at this point in the history
  • Loading branch information
Freed-Wu committed May 20, 2024
1 parent 19f7161 commit b2b4f4c
Show file tree
Hide file tree
Showing 6 changed files with 16 additions and 21 deletions.
10 changes: 5 additions & 5 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ exclude: ^templates/.*|.*\.json$

repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.5.0
rev: v4.6.0
hooks:
- id: check-added-large-files
- id: fix-byte-order-marker
Expand Down Expand Up @@ -51,7 +51,7 @@ repos:
exclude_types:
- zsh
- repo: https://github.com/rhysd/actionlint
rev: v1.6.26
rev: v1.7.0
hooks:
- id: actionlint
- repo: https://github.com/adrienverge/yamllint
Expand All @@ -73,7 +73,7 @@ repos:
- mdformat-config
- mdformat-web
- repo: https://github.com/DavidAnson/markdownlint-cli2
rev: v0.12.1
rev: v0.13.0
hooks:
- id: markdownlint-cli2
additional_dependencies:
Expand All @@ -83,12 +83,12 @@ repos:
hooks:
- id: shfmt
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.2.1
rev: v0.4.4
hooks:
- id: ruff
- id: ruff-format
- repo: https://github.com/kumaraditya303/mirrors-pyright
rev: v1.1.350
rev: v1.1.362
hooks:
- id: pyright

Expand Down
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@ lsp-tree-sitter
platformdirs
# validate uri
rfc3987
tree-sitter-languages
tree-sitter-bash
4 changes: 1 addition & 3 deletions src/termux_language_server/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,13 +83,11 @@ def main():
from lsp_tree_sitter.diagnose import check
from lsp_tree_sitter.format import format
from lsp_tree_sitter.utils import pprint
from tree_sitter_languages import get_parser as _get_parser

from .finders import DIAGNOSTICS_FINDER_CLASSES, FORMAT_FINDER_CLASSES
from .schema import BashTrie
from .utils import get_filetype
from .utils import get_filetype, parser

parser = _get_parser("bash")
if args.generate_schema:
from .misc import get_schema

Expand Down
8 changes: 2 additions & 6 deletions src/termux_language_server/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@
TextEdit,
)
from pygls.server import LanguageServer
from tree_sitter_languages import get_parser

from .finders import (
DIAGNOSTICS_FINDER_CLASSES,
Expand All @@ -45,7 +44,7 @@
search_package_document,
search_package_names,
)
from .utils import get_filetype, get_schema
from .utils import get_filetype, get_schema, parser


class TermuxLanguageServer(LanguageServer):
Expand All @@ -60,7 +59,6 @@ def __init__(self, *args: Any) -> None:
"""
super().__init__(*args)
self.trees = {}
self.parser = get_parser("bash")

@self.feature(TEXT_DOCUMENT_DID_OPEN)
@self.feature(TEXT_DOCUMENT_DID_CHANGE)
Expand All @@ -75,9 +73,7 @@ def did_change(params: DidChangeTextDocumentParams) -> None:
if filetype == "":
return None
document = self.workspace.get_document(params.text_document.uri)
self.trees[document.uri] = self.parser.parse(
document.source.encode()
)
self.trees[document.uri] = parser.parse(document.source.encode())
diagnostics = get_diagnostics(
document.uri,
self.trees[document.uri],
Expand Down
8 changes: 5 additions & 3 deletions src/termux_language_server/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,16 @@
import os
from typing import Any, Literal

from tree_sitter import Query
from tree_sitter_languages import get_language
from tree_sitter import Language, Parser, Query
from tree_sitter_bash import language as get_language_ptr

from . import FILETYPE

SCHEMAS = {}
QUERIES = {}
language = Language(get_language_ptr(), "bash")
parser = Parser()
parser.set_language(language)


def get_query(name: str, filetype: str = "bash") -> Query:
Expand All @@ -34,7 +37,6 @@ def get_query(name: str, filetype: str = "bash") -> Query:
)
) as f:
text = f.read()
language = get_language(filetype)
QUERIES[name] = language.query(text)
return QUERIES[name]

Expand Down
5 changes: 2 additions & 3 deletions tests/test_schema.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@

from lsp_tree_sitter.finders import SchemaFinder
from termux_language_server.schema import BashTrie
from termux_language_server.utils import get_filetype, get_schema
from tree_sitter_languages import get_parser
from termux_language_server.utils import get_filetype, get_schema, parser

PATH = os.path.dirname(__file__)

Expand All @@ -24,7 +23,7 @@ def test_SchemaFinder() -> None:
assert filetype == "build.sh"
with open(path, "rb") as f:
text = f.read()
tree = get_parser("bash").parse(text)
tree = parser.parse(text)
finder = SchemaFinder(get_schema(filetype), BashTrie)
diagnostics = finder.get_diagnostics(path, tree)
assert len(diagnostics) > 0

0 comments on commit b2b4f4c

Please sign in to comment.