A minimal Neovim configuration tailored for Ember.js development, featuring Tree-sitter for syntax highlighting and Language Server Protocol (LSP) support for Ember and TypeScript.
This is not a full-featured IDE setup — it's intentionally simple to serve as a starting point for your own configuration.
- 🧹 Clean Lua-based config structure
- 📦 Ember.js and TypeScript LSP integration
- 🎨 Tree-sitter-based syntax highlighting
- 🧠 Autocompletion with
blink.cmp
.
├── init.lua # Main Neovim entry point
├── lazy-lock.json # Plugin lockfile
├── LICENSE
├── lua
│ ├── config
│ │ ├── base.lua # Core editor settings (e.g. line numbers, tabs)
│ │ ├── keymaps.lua # Key bindings
│ │ └── lazy.lua # Lazy.nvim setup
│ └── plugins
│ ├── lsp.lua # LSP config (via mason + lspconfig)
│ └── treesitter.lua # Tree-sitter config
- Clone this repo into your Neovim config:
git clone https://github.com/ember-tooling/neovim-config ~/.config/nvim
- Open Neovim. (Plugins will be installed automatically by lazy.nvim)
nvim .
If you want to maintain multiple Neovim configurations, you can clone this repo into a different directory, such as ~/.config/nvim-ember
, and then start Neovim with that config:
NVIM_APPNAME=nvim-ember nvim .
<leader>
is set to
. You can change this in lua/config/base.lua
.
Lazy.nvim is used for efficient plugin management.
Enables syntax highlighting and structural editing.
Controlled via the ensure_installed
list to define which languages to support.
Tree-sitter intro: YouTube – TreeSitter Explained
Brings IDE-like features directly into Neovim.
LSP intro: YouTube – LSP Explained in 5 Minutes
Core LSP Plugins Used:
Plugin | Purpose |
---|---|
mason.nvim |
Install and manage LSPs, formatters, linters |
nvim-lspconfig |
Provides base configurations for common LSPs |
mason-lspconfig.nvim |
Bridges mason.nvim with nvim-lspconfig |
blink.cmp |
Autocompletion UI for LSP and snippets |
Key bindings are defined in lua/config/keymaps.lua
.
The keymap added as an example passes the definitions of the symbol under the cursor to the quickfix list.
vim.keymap.set("n", "gd", vim.lsp.buf.definition, { desc = "Go to definition" })
To see all default LSP key bindings see global-defaults.
If you're looking for more comprehensive Neovim configurations with more plugins and UI enhancements, check out the following options:
A small, single-file starter config, great for learning.
To add Ember support, simply modify the LSP section:
local servers = {
tsserver = {},
ember = {},
}
A powerful, batteries-included Neovim distribution created by folke.
Note: You’ll need this PR merged for full Ember support.
To enable Ember and TypeScript support:
- Run :LazyExtras
- Search for lang.ember and lang.typescript
- Enable using the key
More coming soon—feel free to submit a PR with your own setup!