diff --git a/aider/repomap.py b/aider/repomap.py index 1b3fdc1ab..f604f670e 100644 --- a/aider/repomap.py +++ b/aider/repomap.py @@ -517,6 +517,7 @@ def get_scm_fname(lang): def get_supported_languages_md(): from grep_ast.parsers import PARSERS + from aider.linter import Linter res = """ @@ -525,11 +526,11 @@ def get_supported_languages_md(): """ data = sorted((lang, ex) for ex, lang in PARSERS.items()) linter = Linter() - + for lang, ext in data: fn = get_scm_fname(lang) - repo_map = "✓" if Path(fn).exists() else "✗" - linter_support = "✓" if lang in linter.languages else "✗" + repo_map = "✓" if Path(fn).exists() else "" + linter_support = "✓" res += f"| {lang:20} | {ext:20} | {repo_map:^8} | {linter_support:^6} |\n" res += "\n" diff --git a/aider/website/docs/languages.md b/aider/website/docs/languages.md index dad1c9242..7ccd3f6d8 100644 --- a/aider/website/docs/languages.md +++ b/aider/website/docs/languages.md @@ -9,40 +9,76 @@ Aider supports almost all popular coding languages. This is because top LLMs are fluent in most mainstream languages, and familiar with popular libraries, packages and frameworks. -Aider uses tree-sitter to do code analysis and help +Aider has specific support for linting many languages. +By default, aider runs the built in linter any time a file is edited. +If it finds syntax errors, aider will offer to fix them for you. +This helps catch small code issues and quickly fix them. + +Aider also does code analysis to help the LLM navigate larger code bases by producing a [repository map](https://aider.chat/docs/repomap.html). Aider can currently produce repository maps for many popular mainstream languages, listed below. -Aider should work quite well for other languages, even without repo map support. +Aider should work quite well for other languages, even those +without repo map or linter support. -| Language | File extension | -|:--------:|:--------------:| -| c | .c | -| c_sharp | .cs | -| cpp | .cc | -| cpp | .cpp | -| elisp | .el | -| elixir | .ex | -| elm | .elm | -| go | .go | -| java | .java | -| javascript | .js | -| javascript | .mjs | -| ocaml | .ml | -| php | .php | -| python | .py | -| ql | .ql | -| ruby | .rb | -| rust | .rs | -| typescript | .ts | -| typescript | .tsx | +| Language | File extension | Repo map | Linter | +|:--------:|:--------------:|:--------:|:------:| +| bash | .bash | | ✓ | +| c | .c | ✓ | ✓ | +| c_sharp | .cs | ✓ | ✓ | +| commonlisp | .cl | | ✓ | +| cpp | .cc | ✓ | ✓ | +| cpp | .cpp | ✓ | ✓ | +| css | .css | | ✓ | +| dockerfile | .dockerfile | | ✓ | +| dot | .dot | | ✓ | +| elisp | .el | ✓ | ✓ | +| elixir | .ex | ✓ | ✓ | +| elm | .elm | ✓ | ✓ | +| embedded_template | .et | | ✓ | +| erlang | .erl | | ✓ | +| go | .go | ✓ | ✓ | +| gomod | .gomod | | ✓ | +| hack | .hack | | ✓ | +| haskell | .hs | | ✓ | +| hcl | .hcl | | ✓ | +| html | .html | | ✓ | +| java | .java | ✓ | ✓ | +| javascript | .js | ✓ | ✓ | +| javascript | .mjs | ✓ | ✓ | +| jsdoc | .jsdoc | | ✓ | +| json | .json | | ✓ | +| julia | .jl | | ✓ | +| kotlin | .kt | | ✓ | +| lua | .lua | | ✓ | +| make | .mk | | ✓ | +| objc | .m | | ✓ | +| ocaml | .ml | ✓ | ✓ | +| perl | .pl | | ✓ | +| php | .php | ✓ | ✓ | +| python | .py | ✓ | ✓ | +| ql | .ql | ✓ | ✓ | +| r | .R | | ✓ | +| r | .r | | ✓ | +| regex | .regex | | ✓ | +| rst | .rst | | ✓ | +| ruby | .rb | ✓ | ✓ | +| rust | .rs | ✓ | ✓ | +| scala | .scala | | ✓ | +| sql | .sql | | ✓ | +| sqlite | .sqlite | | ✓ | +| toml | .toml | | ✓ | +| tsq | .tsq | | ✓ | +| typescript | .ts | ✓ | ✓ | +| typescript | .tsx | ✓ | ✓ | +| yaml | .yaml | | ✓ |