From d24acb0d6dbf776c2680b8c15f660a2af5499113 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. The filetypes are introduced by https://github.com/ocaml/vim-ocaml/pull/61 --- .../autoload/neomake/makers/ft/menhir.vim | 11 +++++++++ .../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 +++++++++++++++++++ 8 files changed, 66 insertions(+) create mode 100644 vim/merlin/autoload/neomake/makers/ft/menhir.vim 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/menhir.vim b/vim/merlin/autoload/neomake/makers/ft/menhir.vim new file mode 100644 index 0000000000..b102aa668f --- /dev/null +++ b/vim/merlin/autoload/neomake/makers/ft/menhir.vim @@ -0,0 +1,11 @@ +function! neomake#makers#ft#menhir#EnabledMakers() abort + return ['merlin'] +endfunction + +function! neomake#makers#ft#menhir#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/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'})