# File types

The languages Rip highlights, how it recognizes a file, and what each language gets.


Rip highlights code with tree-sitter grammars that ship inside the app. There is nothing to install and no language server. This page lists what Rip recognizes.

## How Rip picks a language

Rip looks at the file name first and then at the extension. A `README` with no extension is Markdown, and `Cargo.lock` is TOML. `Dockerfile`, `Makefile`, and `justfile` use the shell grammar. The extension check ignores case, so `MAIN.RS` is Rust. Any other file opens as plain text.

The status bar names the language of the current file.

## What a language gets

- Highlighting from its grammar, in the editor, in diffs, and in Markdown code fences.
- Comment toggling with <kbd>secondary-/</kbd>, with the comment syntax in the table below.
- Indentation that follows the language's brackets.

A code fence names its language with one of the fence names in the table, as in ` ```rust `.

## Languages

The table comes from the source, so it matches this release.

| Language | Extensions | File names | Fence names | Comment |
| --- | --- | --- | --- | --- |
| Rust | `.rs` |  | `rust` `rs` | `//` |
| Go | `.go` | `go.mod` `go.sum` | `go` `golang` | `//` |
| Ruby | `.rb` `.rake` `.gemspec` `.ru` `.erb` | `Gemfile` | `ruby` `rb` | `#` |
| Vibescript | `.vibe` |  | `vibescript` `vibe` | `#` |
| Python | `.py` `.pyi` `.pyw` |  | `python` `py` `python3` | `#` |
| JavaScript | `.js` `.jsx` `.mjs` `.cjs` |  | `javascript` `js` `jsx` `mjs` `node` | `//` |
| TypeScript | `.ts` `.mts` `.cts` |  | `typescript` `ts` | `//` |
| TSX | `.tsx` |  | `tsx` | `//` |
| Markdown | `.md` `.markdown` `.mdx` `.mdown` `.mkd` | `README` `CHANGELOG` `CONTRIBUTING` | `markdown` `md` | `<!-- -->` |
| JSON | `.json` `.jsonc` `.json5` `.webmanifest` | `.babelrc` `.eslintrc` `.prettierrc` | `json` `jsonc` `json5` | `//` |
| TOML | `.toml` | `Cargo.lock` | `toml` | `#` |
| YAML | `.yml` `.yaml` |  | `yaml` `yml` | `#` |
| Shell | `.sh` `.bash` `.zsh` `.fish` `.bashrc` `.zshrc` `.env` | `.bashrc` `Dockerfile` `Makefile` `Justfile` `justfile` | `bash` `sh` `shell` `zsh` `console` `shell-session` | `#` |
| HTML | `.html` `.htm` `.xhtml` `.vue` `.svelte` |  | `html` `xhtml` `vue` `svelte` | `<!-- -->` |
| CSS | `.css` `.scss` `.less` |  | `css` `scss` `less` | `/* */` |
| C | `.c` `.h` |  | `c` | `//` |
| C++ | `.cpp` `.cc` `.cxx` `.hpp` `.hh` `.hxx` `.ino` `.mm` |  | `cpp` `c++` `cxx` `objc++` | `//` |
| Swift | `.swift` | `Package.swift` | `swift` | `//` |
| Java | `.java` |  | `java` | `//` |
| Diff | `.diff` `.patch` |  | `diff` `patch` |  |
| Plain Text | `.txt` `.text` `.log` |  | `text` `txt` `plain` |  |

