Textualize/textual · warning · LanguageDoesNotExist
tree-sitter is available, but no built-in or user-registered
Error message
tree-sitter is available, but no built-in or user-registered language called {language!r}.
Ensure the language is installed (e.g. `pip install tree-sitter-ruby`)
Falling back to plain text. What it means
Raised by TextArea._set_document when tree-sitter is installed, but the requested language name is neither user-registered (via TextArea.register_language / a syntax) nor available via tree_sitter.get_language. The message notes it falls back to plain text and suggests installing the language, e.g. pip install tree-sitter-ruby.
Source
Thrown at src/textual/widgets/_text_area.py:1147
language available in the current environment (e.g. use `python` for `tree-sitter-python`).
If None, the document will be treated as plain text.
"""
self._highlight_query = None
if TREE_SITTER and language:
if language in self._languages:
# User-registered languages take priority.
highlight_query = self._languages[language].highlight_query
document_language = self._languages[language].language
if document_language is None:
document_language = get_language(language)
else:
# No user-registered language, so attempt to use a built-in language.
highlight_query = self._get_builtin_highlight_query(language)
document_language = get_language(language)
# No built-in language, and no user-registered language: use plain text and warn.
if document_language is None:
raise LanguageDoesNotExist(
f"tree-sitter is available, but no built-in or user-registered language called {language!r}.\n"
f"Ensure the language is installed (e.g. `pip install tree-sitter-ruby`)\n"
f"Falling back to plain text."
)
else:
document: DocumentBase
try:
document = SyntaxAwareDocument(text, document_language)
except SyntaxAwareDocumentError:
document = Document(text)
log.warning(
f"Parser not found for language {document_language!r}. Parsing disabled."
)
else:
self._highlight_query = document.prepare_query(highlight_query)
elif language and not TREE_SITTER:
# User has supplied a language i.e. `TextArea(language="python")`, but they
# don't have tree-sitter available in the environment. We fallback to plain text.View on GitHub (pinned to 06dbeef4bb)
Solutions
- Install the matching tree-sitter language package: e.g. `pip install tree-sitter-ruby`.
- Use the exact language name Textual/tree-sitter expects (e.g. 'python', 'javascript', 'go' — not 'golang').
- Register a custom language/query pair with TextArea.register_language if using a non-bundled grammar.
- Note the widget still works as plain text after the error; fix packaging to get highlighting.
Example fix
# before (env lacks the package) TextArea.code_editor(code, language='go') # after # pip install tree-sitter-go TextArea.code_editor(code, language='go')
Defensive patterns
Strategy: fallback
Validate before calling
from textual.widgets.text_area import TextArea
name = {'golang': 'go'}.get(lang, lang)
if TextArea is using tree-sitter and not registered/installed: fallback to plain 'text' Try / catch
try:
TextArea.code_editor(text, language=lang)
except LanguageDoesNotExist:
TextArea.code_editor(text) # plain text Prevention
- pip install the tree-sitter-<language> package in the target env
- Use canonical language names ('go', 'javascript')
- Register custom grammars via TextArea.register_language
When it happens
Trigger: TextArea.code_editor('ruby', language='ruby') without `pip install tree-sitter-ruby`; using a language name that doesn't match tree-sitter conventions (e.g. 'golang' vs 'go', 'js' vs 'javascript').
Common situations: Missing tree-sitter language packages in the environment, Docker/CI images without the language wheels, name mismatches with tree-sitter package naming, or Textual version changes to bundled languages.
Related errors
- SyntaxAwareDocument unavailable - tree-sitter is not install
- {theme!r} is not a builtin theme, or it has not been registe
- Can't animate attribute {attribute!r} on {obj!r}; attribute
- Don't know how to animate {value!r}; Can only animate <int>,
- Can't encode {datum!r}
AI-assisted analysis of Textualize/textual@06dbeef4bb (2026-08-27).
Data as JSON: /api/errors/75f2a25d46db38fe.
Report an issue: GitHub.