mirror of
https://github.com/dense-analysis/ale
synced 2025-02-16 12:16:56 +00:00
I have an LSP that is returning markdown code blocks on Hover with no language specified, e.g. ```` ``` Foobar ``` ```` As a result, you get "```" in the message line which is not that useful. I made the regex to catch the first code fence accept empty language as well, and if it's empty, we set it to "text". This makes it so that LSPs that return no language still produce legible restuls on the message line. Co-authored-by: Oliver Ruben Albertini <ora@fb.com>
229 lines
5.6 KiB
Plaintext
229 lines
5.6 KiB
Plaintext
Execute(Invalid results should be handled):
|
|
AssertEqual [[], []], ale#hover#ParseLSPResult(0)
|
|
AssertEqual [[], []], ale#hover#ParseLSPResult([0])
|
|
AssertEqual [[], []], ale#hover#ParseLSPResult('')
|
|
AssertEqual [[], []], ale#hover#ParseLSPResult({})
|
|
AssertEqual [[], []], ale#hover#ParseLSPResult([{}])
|
|
AssertEqual [[], []], ale#hover#ParseLSPResult([''])
|
|
AssertEqual [[], []], ale#hover#ParseLSPResult({'value': ''})
|
|
AssertEqual [[], []], ale#hover#ParseLSPResult([{'value': ''}])
|
|
AssertEqual [[], []], ale#hover#ParseLSPResult({'kind': 'markdown'})
|
|
AssertEqual [[], []], ale#hover#ParseLSPResult({'kind': 'plaintext'})
|
|
AssertEqual [[], []], ale#hover#ParseLSPResult({'kind': 'x', 'value': 'xxx'})
|
|
|
|
Execute(A string with a code fence should be handled):
|
|
AssertEqual
|
|
\ [
|
|
\ [
|
|
\ ],
|
|
\ [
|
|
\ 'def foo():',
|
|
\ ' pass',
|
|
\ ],
|
|
\ ],
|
|
\ ale#hover#ParseLSPResult(join([
|
|
\ '```',
|
|
\ 'def foo():',
|
|
\ ' pass',
|
|
\ '```',
|
|
\ ], "\n"))
|
|
|
|
AssertEqual
|
|
\ [
|
|
\ [
|
|
\ 'unlet! b:current_syntax',
|
|
\ 'syntax include @ALE_hover_python syntax/python.vim',
|
|
\ 'syntax region ALE_hover_1 start=/\%1l/ end=/\%3l/ contains=@ALE_hover_python',
|
|
\ ],
|
|
\ [
|
|
\ 'def foo():',
|
|
\ ' pass',
|
|
\ ],
|
|
\ ],
|
|
\ ale#hover#ParseLSPResult(join([
|
|
\ '```python',
|
|
\ 'def foo():',
|
|
\ ' pass',
|
|
\ '```',
|
|
\ ], "\n"))
|
|
|
|
AssertEqual
|
|
\ [
|
|
\ [
|
|
\ 'unlet! b:current_syntax',
|
|
\ 'syntax include @ALE_hover_javascript syntax/javascript.vim',
|
|
\ 'unlet! b:current_syntax',
|
|
\ 'syntax include @ALE_hover_python syntax/python.vim',
|
|
\ 'syntax region ALE_hover_1 start=/\%1l/ end=/\%3l/ contains=@ALE_hover_python',
|
|
\ 'syntax region ALE_hover_2 start=/\%5l/ end=/\%8l/ contains=@ALE_hover_python',
|
|
\ 'syntax region ALE_hover_3 start=/\%8l/ end=/\%10l/ contains=@ALE_hover_javascript',
|
|
\ ],
|
|
\ [
|
|
\ 'def foo():',
|
|
\ ' pass',
|
|
\ '',
|
|
\ 'middle line',
|
|
\ '',
|
|
\ 'def bar():',
|
|
\ ' pass',
|
|
\ '',
|
|
\ 'const baz = () => undefined',
|
|
\ ],
|
|
\ ],
|
|
\ ale#hover#ParseLSPResult(join([
|
|
\ '```python',
|
|
\ 'def foo():',
|
|
\ ' pass',
|
|
\ '```',
|
|
\ 'middle line',
|
|
\ '```python',
|
|
\ 'def bar():',
|
|
\ ' pass',
|
|
\ '```',
|
|
\ '```javascript',
|
|
\ 'const baz = () => undefined',
|
|
\ '```',
|
|
\ ], "\n"))
|
|
|
|
Execute(Multiple strings with fences should be handled):
|
|
AssertEqual
|
|
\ [
|
|
\ [
|
|
\ 'unlet! b:current_syntax',
|
|
\ 'syntax include @ALE_hover_javascript syntax/javascript.vim',
|
|
\ 'unlet! b:current_syntax',
|
|
\ 'syntax include @ALE_hover_python syntax/python.vim',
|
|
\ 'syntax region ALE_hover_1 start=/\%1l/ end=/\%3l/ contains=@ALE_hover_python',
|
|
\ 'syntax region ALE_hover_2 start=/\%5l/ end=/\%8l/ contains=@ALE_hover_python',
|
|
\ 'syntax region ALE_hover_3 start=/\%8l/ end=/\%10l/ contains=@ALE_hover_javascript',
|
|
\ ],
|
|
\ [
|
|
\ 'def foo():',
|
|
\ ' pass',
|
|
\ '',
|
|
\ 'middle line',
|
|
\ '',
|
|
\ 'def bar():',
|
|
\ ' pass',
|
|
\ '',
|
|
\ 'const baz = () => undefined',
|
|
\ ],
|
|
\ ],
|
|
\ ale#hover#ParseLSPResult([
|
|
\ join([
|
|
\ '```python',
|
|
\ 'def foo():',
|
|
\ ' pass',
|
|
\ '```',
|
|
\ ], "\n"),
|
|
\ join([
|
|
\ 'middle line',
|
|
\ '```python',
|
|
\ 'def bar():',
|
|
\ ' pass',
|
|
\ '```',
|
|
\ '```javascript',
|
|
\ 'const baz = () => undefined',
|
|
\ '```',
|
|
\ ], "\n"),
|
|
\ ])
|
|
|
|
Execute(Objects with kinds should be handled):
|
|
AssertEqual
|
|
\ [
|
|
\ [
|
|
\ 'unlet! b:current_syntax',
|
|
\ 'syntax include @ALE_hover_python syntax/python.vim',
|
|
\ 'syntax region ALE_hover_1 start=/\%1l/ end=/\%3l/ contains=@ALE_hover_python',
|
|
\ ],
|
|
\ [
|
|
\ 'def foo():',
|
|
\ ' pass',
|
|
\ '',
|
|
\ '```javascript',
|
|
\ 'const baz = () => undefined',
|
|
\ '```',
|
|
\ ],
|
|
\ ],
|
|
\ ale#hover#ParseLSPResult([
|
|
\ {
|
|
\ 'kind': 'markdown',
|
|
\ 'value': join([
|
|
\ '```python',
|
|
\ 'def foo():',
|
|
\ ' pass',
|
|
\ '```',
|
|
\ ], "\n"),
|
|
\ },
|
|
\ {
|
|
\ 'kind': 'plaintext',
|
|
\ 'value': join([
|
|
\ '```javascript',
|
|
\ 'const baz = () => undefined',
|
|
\ '```',
|
|
\ ], "\n"),
|
|
\ },
|
|
\ ])
|
|
|
|
Execute(Simple markdown formatting should be handled):
|
|
AssertEqual
|
|
\ [
|
|
\ [
|
|
\ 'unlet! b:current_syntax',
|
|
\ 'syntax include @ALE_hover_python syntax/python.vim',
|
|
\ 'syntax region ALE_hover_1 start=/\%1l/ end=/\%3l/ contains=@ALE_hover_python',
|
|
\ ],
|
|
\ [
|
|
\ 'def foo():',
|
|
\ ' pass',
|
|
\ '',
|
|
\ 'formatted _ line _',
|
|
\ ],
|
|
\ ],
|
|
\ ale#hover#ParseLSPResult(join([
|
|
\ '```python',
|
|
\ 'def foo():',
|
|
\ ' pass',
|
|
\ '```',
|
|
\ 'formatted \_ line \_',
|
|
\ ], "\n"))
|
|
|
|
Execute(Fences padded with spaces should be handled):
|
|
AssertEqual
|
|
\ [
|
|
\ [
|
|
\ 'unlet! b:current_syntax',
|
|
\ 'syntax include @ALE_hover_python syntax/python.vim',
|
|
\ 'syntax region ALE_hover_1 start=/\%1l/ end=/\%3l/ contains=@ALE_hover_python',
|
|
\ ],
|
|
\ [
|
|
\ 'def foo():',
|
|
\ ' pass',
|
|
\ '',
|
|
\ 'formatted _ line _',
|
|
\ ],
|
|
\ ],
|
|
\ ale#hover#ParseLSPResult(join([
|
|
\ '``` python ',
|
|
\ 'def foo():',
|
|
\ ' pass',
|
|
\ '```',
|
|
\ 'formatted \_ line \_',
|
|
\ ], "\n"))
|
|
|
|
Execute(Non-existent syntax files shouldn't be loaded):
|
|
AssertEqual
|
|
\ [
|
|
\ [
|
|
\ 'syntax region ALE_hover_1 start=/\%1l/ end=/\%2l/ contains=@ALE_hover_text',
|
|
\ ],
|
|
\ [
|
|
\ 'hello',
|
|
\ ],
|
|
\ ],
|
|
\ ale#hover#ParseLSPResult(join([
|
|
\ '```text',
|
|
\ 'hello',
|
|
\ '```',
|
|
\ ], "\n"))
|