ember-language-server extension for coc.nvim
Via Plug
Plug 'nullvoxpopuli/coc-ember', {'do': 'yarn install --frozen-lockfile'}
Or via the automatically kept up-to-date config var:
let g:coc_global_extensions = [
\ 'coc-ember'
\ ]
-
For the fanciest experience, install the neovim nightly release
-
Install vim-plug
-
Setup your (neo|oni)vim's config:
call plug#begin('~/.local/share/nvim/plugged') " Highlighting and language support Plug 'leafgarland/typescript-vim' Plug 'joukevandermaas/vim-ember-hbs' " CoC / Intellisense Plug 'neoclide/coc.nvim', {'do': 'yarn install --frozen-lockfile'} call plug#end() let g:coc_global_extensions = [ \ 'coc-actions', \ 'coc-tsserver', \ 'coc-css', \ 'coc-json', \ 'coc-html', \ 'coc-vimlsp', \ 'coc-highlight', \ 'coc-ember' \ ]
-
Restart your editor, run
:PlugInstall
-
Navigate to an ember project and open (neo|oni)vim.
Done :)
To test this out with neovim:
- clone this repo
- go to an ember project and run
nvim . -u path/to/repo/docs/minimal-config.vim
There are two working neovim single-file configs in this repo
Additionally, @NullVoxPopuli's vim config can be found here
- mu, pods, classic layouts support for app models definitions lookup, including js and ts files.
- mu, pods, classic layouts support for app transforms definitions lookup, including js and ts files.
- addon components and helpers definitions lookup
- AngleBracket components autocomplete (including addon-located components) for mu, pods, classic layouts.
- go-to routes, component properties, actions for mu, pods, classic
- go-to service declaration definition for classic components
- go-to ember/addon import support
- store.peekRecord, findRecord... model names autocomplete for classic
- belongsTo, hasMany model names autocomplete for classic
- transitionTo,.. routes autocomplete for classic
- named: service(name) services autocomplete
- template linting fix
- in-repo addons lookup (for classic and mu apps)
Other Features:
- Component and helper autocompletion for inline and sub expressions
- Definition providers for (enable features like "Go To Definition" or "Peek Definition"):
- Components (in Templates)
- Helpers (in Templates)
- Models
- Transforms
- Route autocompletion in link-to
- Diagnostics for ember-template-lint (if it is included in a project)
NOTE: development will not work on Windows machines, as all the scripts are in Bash and expect *nix compatibility
- fork repo
- make modifications
- Open PR <3
Testing
- be in coc-ember root directory
./scripts/prepublish.sh
yarn link
- test in your own ember project via
- :CocList extensions
- cd to the extensions path (the folder containing a package.json, on linux:
~/.config/coc/extensions/
) yarn link coc-ember
- restart (neo)vim
Debugging
NOTE: ./scripts/prepublish.sh
needs be run initially. Afterwards, the following may be used to rebuild each sub-tool, depending on what you're changing.
yarn build:js
- coc-emberyarn build:addons
- the UELS addons bundled with coc-ember
Generally
- be in ember project
- open (neo)vim
Viewing Logs
- Optionally launch with
NVIM_COC_LOG_LEVEL=debug nvim .
- This is very verbose, but is the only way to have stack traces printed
:CocOpenLog
to view log.:e
to refresh the log
Debugging Chrome Dev Tools
:let g:coc_node_args = ['--nolazy', '--inspect-brk=6045']`
:CocRestart
Then visit chrome://inspect/#devices
These steps are handy for reporting issues
- in
<coc-ember>
yarn
./scripts/prepublish.sh
yarn link
- in
<your ember project>
- either
- use your own configuration
cd ~/.config/coc/extensions && yarn link coc-ember
- open nvim, don't update dependencies
- or use a minimal config
nvim -u <coc-ember>/docs/minimal-config.vim
:PlugInstall
cd ~/.config/coc/extensions && yarn link coc-ember
- then back in your project:
nvim -u <coc-ember>/docs/minimal-config.vim
- use your own configuration
- either