Add the typstyle formatter as a fixer for Typst (#4927)
Some checks are pending
CI / build_image (push) Waiting to run
CI / test_ale (--linters-only) (push) Blocked by required conditions
CI / test_ale (--neovim-07-only) (push) Blocked by required conditions
CI / test_ale (--neovim-08-only) (push) Blocked by required conditions
CI / test_ale (--vim-80-only) (push) Blocked by required conditions
CI / test_ale (--vim-90-only) (push) Blocked by required conditions

Co-authored-by: Adrian Vollmer <computerfluesterer@protonmail.com>
This commit is contained in:
Adrian Vollmer
2025-03-17 13:10:24 +01:00
committed by GitHub
parent 995d78435a
commit fe6a91fb92
7 changed files with 76 additions and 0 deletions

View File

@@ -707,6 +707,11 @@ let s:default_registry = {
\ 'suggested_filetypes': ['clojure'],
\ 'description': 'formatter and linter for clojure files',
\ },
\ 'typstyle': {
\ 'function': 'ale#fixers#typstyle#Fix',
\ 'suggested_filetypes': ['typst'],
\ 'description': 'A formatter for Typst files',
\ },
\}
" Reset the function registry to the default entries.

View File

@@ -0,0 +1,20 @@
" Author: Adrian Vollmer (computerfluesterer@protonmail.com)
" Description: Typst formatter using typstyle
call ale#Set('typst_typstyle_executable', 'typstyle')
call ale#Set('typst_typstyle_use_global', get(g:, 'ale_use_global_executables', 0))
call ale#Set('typst_typstyle_options', '')
function! ale#fixers#typstyle#Fix(buffer) abort
let l:executable = ale#path#FindExecutable(
\ a:buffer,
\ 'typst_typstyle',
\ ['typstyle']
\)
let l:options = ale#Var(a:buffer, 'typst_typstyle_options')
return {
\ 'command': ale#Escape(l:executable) . ' ' . l:options,
\}
endfunction

View File

@@ -686,6 +686,8 @@ Notes:
* `tslint`
* `tsserver`
* `typecheck`
* Typst
* `typstyle`
* V
* `v`!!
* `vfmt`

24
doc/ale-typst.html Normal file
View File

@@ -0,0 +1,24 @@
===============================================================================
ALE Typst Integration *ale-typst-options*
===============================================================================
typstyle *ale-typst-typstyle*
g:ale_typst_typstyle_executable *g:ale_typst_typstyle_executable*
*b:ale_typst_typstyle_executable*
Type: |String|
Default: `'typstyle'`
See |ale-integrations-local-executables|
g:ale_typst_typstyle_options *g:ale_typst_typstyle_options*
*b:ale_typst_typstyle_options*
Type: |String|
Default: `''`
This variable can be changed to modify flags given to typstyle.
===============================================================================
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:

View File

@@ -3478,6 +3478,8 @@ documented in additional help files.
tslint................................|ale-typescript-tslint|
tsserver..............................|ale-typescript-tsserver|
xo....................................|ale-typescript-xo|
typst...................................|ale-typst-options|
typstyle..............................|ale-typst-typstyle|
v.......................................|ale-v-options|
v.....................................|ale-v-v|
vfmt..................................|ale-v-vfmt|

View File

@@ -695,6 +695,8 @@ formatting.
* [tslint](https://github.com/palantir/tslint)
* [tsserver](https://github.com/Microsoft/TypeScript/wiki/Standalone-Server-%28tsserver%29)
* typecheck
* Typst
* [typstyle](https://github.com/Enter-tainer/typstyle)
* V
* [v](https://github.com/vlang/v/) :floppy_disk:
* [vfmt](https://github.com/vlang/v/)

View File

@@ -0,0 +1,21 @@
Before:
call ale#assert#SetUpFixerTest('typst', 'typstyle', 'typstyle')
After:
Restore
call ale#assert#TearDownFixerTest()
Execute(The typstyle callback should return the correct default command):
AssertEqual
\ {'command': ale#Escape('typstyle') . ' '},
\ ale#fixers#typstyle#Fix(bufnr(''))
Execute(The typstyle options should be considered):
call ale#test#SetFilename('../test-files/typstyle/testfile.typ')
let g:ale_typst_typstyle_options = '-c 100'
AssertFixer
\ { 'command': ale#Escape(g:ale_typst_typstyle_executable)
\ . ' -c 100',
\ }