Improve linter support and repo map coverage for various programming languages.

This commit is contained in:
Paul Gauthier 2024-07-30 12:30:29 -03:00 committed by Paul Gauthier (aider)
parent 74201dd733
commit e2fb2466a9
2 changed files with 63 additions and 26 deletions

View file

@ -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"

View file

@ -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.
<!--[[[cog
from aider.repomap import get_supported_languages_md
cog.out(get_supported_languages_md())
]]]-->
| 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 | | ✓ |
<!--[[[end]]]-->