Summary
This issue tracks the implementation of language modes for languages that are commonly supported by other editors (VS Code, Emacs, Neovim) but are currently missing in Lem.
Background
Lem currently supports 38 language modes. Other major editors support 60+ languages out of the box. This gap affects Lem's competitiveness as a general-purpose editor.
High Priority (Popular Languages)
These are widely-used languages that should be prioritized:
Medium Priority (Domain-Specific)
Languages important in specific domains:
Low Priority (Niche/Legacy)
Emerging Languages (Future Consideration)
Implementation Notes
Each language mode should ideally include:
- Syntax highlighting (regex-based or tree-sitter)
- Indentation support (
calc-indent-function)
- LSP configuration (if language server exists)
- begin/end-of-defun navigation
Minimum Implementation
(define-major-mode <lang>-mode language-mode
(:name "<Language>"
:keymap *<lang>-mode-keymap*
:syntax-table *<lang>-syntax-table*
:mode-hook *<lang>-mode-hook*))
References
- Existing modes:
extensions/rust-mode/, extensions/go-mode/
- LSP config examples:
extensions/python-mode/lsp-config.lisp
- Tree-sitter examples:
extensions/json-mode/tree-sitter/
Contributing
Contributions are welcome! If you'd like to implement a language mode:
- Check if tree-sitter grammar exists for the language
- Check if LSP server exists
- Create a new directory under
extensions/
- Follow existing mode patterns
Please comment on this issue if you're working on a specific language to avoid duplication.
Summary
This issue tracks the implementation of language modes for languages that are commonly supported by other editors (VS Code, Emacs, Neovim) but are currently missing in Lem.
Background
Lem currently supports 38 language modes. Other major editors support 60+ languages out of the box. This gap affects Lem's competitiveness as a general-purpose editor.
High Priority (Popular Languages)
These are widely-used languages that should be prioritized:
Medium Priority (Domain-Specific)
Languages important in specific domains:
Low Priority (Niche/Legacy)
Emerging Languages (Future Consideration)
Implementation Notes
Each language mode should ideally include:
calc-indent-function)Minimum Implementation
References
extensions/rust-mode/,extensions/go-mode/extensions/python-mode/lsp-config.lispextensions/json-mode/tree-sitter/Contributing
Contributions are welcome! If you'd like to implement a language mode:
extensions/Please comment on this issue if you're working on a specific language to avoid duplication.