From 18cd44c57dc3fcebbb83a50e86dd0e8c751be2f2 Mon Sep 17 00:00:00 2001 From: Peter Benjamin Date: Tue, 1 Aug 2023 13:23:02 -0700 Subject: feat(markdown): add marksman lsp (#4565) * feat(markdown): add marksman lsp * docs: add marksman docs * test(markdown): add marksman test Co-authored-by: Peter Benjamin --- ale_linters/markdown/marksman.vim | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 ale_linters/markdown/marksman.vim (limited to 'ale_linters/markdown') diff --git a/ale_linters/markdown/marksman.vim b/ale_linters/markdown/marksman.vim new file mode 100644 index 00000000..b23f0e05 --- /dev/null +++ b/ale_linters/markdown/marksman.vim @@ -0,0 +1,35 @@ +" Author: Peter Benjamin +" Description: Write Markdown with code assist and intelligence in the comfort of your favourite editor. + +call ale#Set('markdown_marksman_executable', 'marksman') + +function! ale_linters#markdown#marksman#GetCommand(buffer) abort + return '%e server' +endfunction + +function! ale_linters#markdown#marksman#GetProjectRoot(buffer) abort + " Find nearest .marksman.toml + let l:marksman_toml = ale#path#FindNearestFile(a:buffer, '.marksman.toml') + + if !empty(l:marksman_toml) + return fnamemodify(l:marksman_toml, ':h') + endif + + " Find nearest .git/ directory + let l:project_root = finddir('.git/..', expand('#' . a:buffer . '...').';') + + if !empty(l:project_root) + return l:project_root + endif + + return '' +endfunction + +call ale#linter#Define('markdown', { +\ 'name': 'marksman', +\ 'lsp': 'stdio', +\ 'executable': {b -> ale#Var(b, 'markdown_marksman_executable')}, +\ 'command': function('ale_linters#markdown#marksman#GetCommand'), +\ 'project_root': function('ale_linters#markdown#marksman#GetProjectRoot'), +\ 'initialization_options': {}, +\}) -- cgit v1.2.3