GitHub - ElmCast/elm-vim: Elm plugin for Vim
source link: https://github.com/ElmCast/elm-vim
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
elm-vim
Features
- Syntax highlighting
- Automatic indentation
- Function completion
- Build and package commands
- Code formatting and linting
- Documentation lookup
- REPL integration
Check out this ElmCast video for more detail.
Installation
If you don't have a preferred installation method, I recommend installing vim-plug, and then simply add Plug 'elmcast/elm-vim'
to your plugin section:
NOTE: If you are using vim-polyglot, you need to disable its default elm plugin by adding let g:polyglot_disabled = ['elm']
to your config file.
Requirements
First, make sure you have the Elm Platform installed. The simplest method to get started is to use the official npm package.
npm install -g elm
In order to run unit tests from within vim, install elm-test
npm install -g elm-test
For code completion and doc lookups, install elm-oracle.
npm install -g elm-oracle
To automatically format your code, install elm-format.
npm install -g elm-format
Mappings
The plugin provides several <Plug>
mappings which can be used to create custom
mappings. The following keybindings are provided by default:
Keybinding | Description |
---|---|
<LocalLeader>m | Compile the current buffer. |
<LocalLeader>b | Compile the Main.elm file in the project. |
<LocalLeader>t | Runs the tests of the current buffer or 'tests/TestRunner'. |
<LocalLeader>r | Opens an elm repl in a subprocess. |
<LocalLeader>e | Shows the detail of the current error or warning. |
<LocalLeader>d | Shows the type and docs for the word under the cursor. |
<LocalLeader>w | Opens the docs web page for the word under the cursor. |
You can disable these mappings if you want to use your own.
let g:elm_setup_keybindings = 0
Integration
Ale
The preferred linter to use with elm-vim is Ale. It should work out of the box.
Syntastic
Syntastic support should work out of the box, but we recommend the following settings:
let g:syntastic_always_populate_loc_list = 1 let g:syntastic_auto_loc_list = 1 let g:elm_syntastic_show_warnings = 1
YouCompleteMe
let g:ycm_semantic_triggers = { \ 'elm' : ['.'], \}
Neocomplete
call neocomplete#util#set_default_dictionary( \ 'g:neocomplete#sources#omni#input_patterns', \ 'elm', \ '\.')
Usage
:help elm-vim
let g:elm_jump_to_error = 0 let g:elm_make_output_file = "elm.js" let g:elm_make_show_warnings = 0 let g:elm_syntastic_show_warnings = 0 let g:elm_browser_command = "" let g:elm_detailed_complete = 0 let g:elm_format_autosave = 1 let g:elm_format_fail_silently = 0 let g:elm_setup_keybindings = 1
-
:ElmMake [filename]
callselm-make
with the given file. If no file is given it uses the current file being edited. -
:ElmMakeMain
attempts to callelm-make
with "Main.elm". -
:ElmTest
callselm-test
with the given file. If no file is given it runs it in the root of your project. -
:ElmRepl
runselm-repl
, which will return to vim on exiting. -
:ElmErrorDetail
shows the detail of the current error in the quickfix window. -
:ElmShowDocs
queries elm-oracle, then echoes the type and docs for the word under the cursor. -
:ElmBrowseDocs
queries elm-oracle, then opens docs web page for the word under the cursor. -
:ElmFormat
formats the current buffer with elm-format.
Screenshots
Credits
- Other vim-plugins, thanks for inspiration (elm.vim, ocaml.vim, haskell-vim)
- Contributors of elm-vim
License
Copyright © Joseph Hager. See LICENSE
for more details.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK