From d2e0927d19e792765fa6898dadce2eda8570af51 Mon Sep 17 00:00:00 2001 From: Pau Ruiz Safont Date: Sun, 16 May 2021 18:00:10 +0100 Subject: [PATCH] Split the ocaml filetype into several filetypes Now ocamlinterface ocamllex and menhir types must be taken into account as well. Menhir filetype is not included as there seem to be no plans to include it and even then it would take a big effort. The filetypes are introduced by https://github.com/ocaml/vim-ocaml/pull/61 --- .../neomake/makers/ft/ocamlinterface.vim | 11 +++++++++ .../autoload/neomake/makers/ft/ocamllex.vim | 11 +++++++++ vim/merlin/dune | 4 ++++ vim/merlin/ftplugin/menhir.vim | 2 ++ vim/merlin/ftplugin/ocamlinterface.vim | 2 ++ vim/merlin/ftplugin/ocamllex.vim | 2 ++ .../syntax_checkers/ocamlinterface/merlin.vim | 23 +++++++++++++++++++ 7 files changed, 55 insertions(+) create mode 100644 vim/merlin/autoload/neomake/makers/ft/ocamlinterface.vim create mode 100644 vim/merlin/autoload/neomake/makers/ft/ocamllex.vim create mode 100644 vim/merlin/ftplugin/menhir.vim create mode 100644 vim/merlin/ftplugin/ocamlinterface.vim create mode 100644 vim/merlin/ftplugin/ocamllex.vim create mode 100644 vim/merlin/syntax_checkers/ocamlinterface/merlin.vim diff --git a/vim/merlin/autoload/neomake/makers/ft/ocamlinterface.vim b/vim/merlin/autoload/neomake/makers/ft/ocamlinterface.vim new file mode 100644 index 0000000000..61772ca8da --- /dev/null +++ b/vim/merlin/autoload/neomake/makers/ft/ocamlinterface.vim @@ -0,0 +1,11 @@ +function! neomake#makers#ft#ocamlinterface#EnabledMakers() abort + return ['merlin'] +endfunction + +function! neomake#makers#ft#ocamlinterface#merlin() abort + let maker = {} + function! maker.get_list_entries(jobinfo) + return merlin#ErrorLocList() + endfunction + return maker +endfunction diff --git a/vim/merlin/autoload/neomake/makers/ft/ocamllex.vim b/vim/merlin/autoload/neomake/makers/ft/ocamllex.vim new file mode 100644 index 0000000000..9e6e96bc5e --- /dev/null +++ b/vim/merlin/autoload/neomake/makers/ft/ocamllex.vim @@ -0,0 +1,11 @@ +function! neomake#makers#ft#ocamllex#EnabledMakers() abort + return ['merlin'] +endfunction + +function! neomake#makers#ft#ocamllex#merlin() abort + let maker = {} + function! maker.get_list_entries(jobinfo) + return merlin#ErrorLocList() + endfunction + return maker +endfunction diff --git a/vim/merlin/dune b/vim/merlin/dune index 40c3348604..7ff847ae35 100644 --- a/vim/merlin/dune +++ b/vim/merlin/dune @@ -11,11 +11,15 @@ (autoload/merlin_visual.vim as vim/autoload/merlin_visual.vim) (doc/merlin.txt as vim/doc/merlin.txt) (ftdetect/merlin.vim as vim/ftdetect/merlin.vim) + (ftplugin/menhir.vim as vim/ftplugin/menhir.vim) (ftplugin/merlin.vim as vim/ftplugin/merlin.vim) (ftplugin/ocaml.vim as vim/ftplugin/ocaml.vim) + (ftplugin/ocamlinterface.vim as vim/ftplugin/ocamlinterface.vim) + (ftplugin/ocamllex.vim as vim/ftplugin/ocamllex.vim) (ftplugin/omlet.vim as vim/ftplugin/omlet.vim) (ftplugin/reason.vim as vim/ftplugin/reason.vim) (plugin/merlin.vim as vim/plugin/merlin.vim) (syntax_checkers/ocaml/merlin.vim as vim/syntax_checkers/ocaml/merlin.vim) + (syntax_checkers/ocamlinterface/merlin.vim as vim/syntax_checkers/ocamlinterface/merlin.vim) (syntax_checkers/omlet/merlin.vim as vim/syntax_checkers/omlet/merlin.vim) (syntax/merlin.vim as vim/syntax/merlin.vim))) diff --git a/vim/merlin/ftplugin/menhir.vim b/vim/merlin/ftplugin/menhir.vim new file mode 100644 index 0000000000..2e33e14808 --- /dev/null +++ b/vim/merlin/ftplugin/menhir.vim @@ -0,0 +1,2 @@ +" Activate merlin on current buffer +call merlin#Register() diff --git a/vim/merlin/ftplugin/ocamlinterface.vim b/vim/merlin/ftplugin/ocamlinterface.vim new file mode 100644 index 0000000000..2e33e14808 --- /dev/null +++ b/vim/merlin/ftplugin/ocamlinterface.vim @@ -0,0 +1,2 @@ +" Activate merlin on current buffer +call merlin#Register() diff --git a/vim/merlin/ftplugin/ocamllex.vim b/vim/merlin/ftplugin/ocamllex.vim new file mode 100644 index 0000000000..2e33e14808 --- /dev/null +++ b/vim/merlin/ftplugin/ocamllex.vim @@ -0,0 +1,2 @@ +" Activate merlin on current buffer +call merlin#Register() diff --git a/vim/merlin/syntax_checkers/ocamlinterface/merlin.vim b/vim/merlin/syntax_checkers/ocamlinterface/merlin.vim new file mode 100644 index 0000000000..e5702ac482 --- /dev/null +++ b/vim/merlin/syntax_checkers/ocamlinterface/merlin.vim @@ -0,0 +1,23 @@ +" Enable Syntastic support +" Make sure syntax_checkers directory is on runtime path, then set +" :let g:syntastic_ocamlinterface_checkers=['merlin'] + +function! SyntaxCheckers_ocamlinterface_merlin_IsAvailable() + if !exists("*merlin#SelectBinary") + return 0 + endif + try + let l:path = merlin#SelectBinary() + return executable(l:path) + catch + return 0 + endtry +endfunction + +function! SyntaxCheckers_ocamlinterface_merlin_GetLocList() + return merlin#ErrorLocList() +endfunction + +call g:SyntasticRegistry.CreateAndRegisterChecker({ + \ 'filetype': 'ocamlinterface', + \ 'name': 'merlin'})