Skip to content

Commit

Permalink
feat(markdown): add marksman lsp (#4565)
Browse files Browse the repository at this point in the history
* feat(markdown): add marksman lsp
* docs: add marksman docs
* test(markdown): add marksman test

Co-authored-by: Peter Benjamin <peter.benjamin@peter.benjamin-FVFHP2WSQ05Q>
  • Loading branch information
pbnj and Peter Benjamin authored Aug 1, 2023
1 parent 1174b3b commit 18cd44c
Show file tree
Hide file tree
Showing 6 changed files with 57 additions and 0 deletions.
35 changes: 35 additions & 0 deletions ale_linters/markdown/marksman.vim
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
" Author: Peter Benjamin <petermbenjamin@gmail.com>
" 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': {},
\})
11 changes: 11 additions & 0 deletions doc/ale-markdown.txt
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,17 @@ g:ale_markdown_markdownlint_options *g:ale_markdown_markdownlint_options*
This variable can be set to pass additional options to markdownlint.


===============================================================================
marksman *ale-markdown-marksman*

g:ale_markdown_marksman_executable *g:ale_markdown_marksman_executable*
*b:ale_markdown_marksman_executable*
Type: |String|
Default: `'marksman'`

Override the invoked `marksman` binary.


===============================================================================
mdl *ale-markdown-mdl*

Expand Down
1 change: 1 addition & 0 deletions doc/ale-supported-languages-and-tools.txt
Original file line number Diff line number Diff line change
Expand Up @@ -364,6 +364,7 @@ Notes:
* `cspell`
* `languagetool`!!
* `markdownlint`!!
* `marksman`
* `mdl`
* `pandoc`
* `prettier`
Expand Down
1 change: 1 addition & 0 deletions doc/ale.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3123,6 +3123,7 @@ documented in additional help files.
cspell................................|ale-markdown-cspell|
dprint................................|ale-markdown-dprint|
markdownlint..........................|ale-markdown-markdownlint|
marksman..............................|ale-markdown-marksman|
mdl...................................|ale-markdown-mdl|
pandoc................................|ale-markdown-pandoc|
prettier..............................|ale-markdown-prettier|
Expand Down
1 change: 1 addition & 0 deletions supported-tools.md
Original file line number Diff line number Diff line change
Expand Up @@ -373,6 +373,7 @@ formatting.
* [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell)
* [languagetool](https://languagetool.org/) :floppy_disk:
* [markdownlint](https://github.com/DavidAnson/markdownlint) :floppy_disk:
* [marksman](https://github.com/artempyanykh/marksman)
* [mdl](https://github.com/mivok/markdownlint)
* [pandoc](https://pandoc.org)
* [prettier](https://github.com/prettier/prettier)
Expand Down
8 changes: 8 additions & 0 deletions test/linter/test_markdown_marksman.vader
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Before:
call ale#assert#SetUpLinterTest('markdown', 'marksman')

After:
call ale#assert#TearDownLinterTest()

Execute(The default command should be correct):
AssertLinter 'marksman', ale#Escape('marksman') . ' server'

0 comments on commit 18cd44c

Please sign in to comment.