From 39c252067ffeae004bd9f14500830b47163f10c8 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 | 3 +++ 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, 54 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..e9c55d1788 100644 --- a/vim/merlin/dune +++ b/vim/merlin/dune @@ -13,9 +13,12 @@ (ftdetect/merlin.vim as vim/ftdetect/merlin.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'})