# HG changeset patch # User Bram Moolenaar # Date 1683753304 -7200 # Node ID 8d7214baf4227b14132fb11cd50a359e602cd012 # Parent af8ecf2c7dfc254d54ae3a7200c7e76f9a33aba0 patch 9.0.1539: typst filetype is not recognized Commit: https://github.com/vim/vim/commit/4ce1bda869e4ec0152d7dcbe1e491ceac5341d5e Author: Gaetan Lepage Date: Wed May 10 22:01:55 2023 +0100 patch 9.0.1539: typst filetype is not recognized Problem: Typst filetype is not recognized. Solution: Distinguish between sql and typst. (Gaetan Lepage, closes https://github.com/vim/vim/issues/12363) diff --git a/runtime/autoload/dist/ft.vim b/runtime/autoload/dist/ft.vim --- a/runtime/autoload/dist/ft.vim +++ b/runtime/autoload/dist/ft.vim @@ -470,7 +470,7 @@ enddef # Returns true if file content looks like LambdaProlog module def IsLProlog(): bool - # skip apparent comments and blank lines, what looks like + # skip apparent comments and blank lines, what looks like # LambdaProlog comment may be RAPID header var l: number = nextnonblank(1) while l > 0 && l < line('$') && getline(l) =~ '^\s*%' # LambdaProlog comment @@ -1106,6 +1106,31 @@ export def FTlsl() endif enddef +export def FTtyp() + if exists("g:filetype_typ") + exe "setf " .. g:filetype_typ + return + endif + + # Look for SQL type definition syntax + for line in getline(1, 200) + # SQL type files may define the casing + if line =~ '^CASE\s\==\s\=\(SAME\|LOWER\|UPPER\|OPPOSITE\)$' + setf sql + return + endif + + # SQL type files may define some types as follows + if line =~ '^TYPE\s.*$' + setf sql + return + endif + endfor + + # Otherwise, affect the typst filetype + setf typst +enddef + # Set the filetype of a *.v file to Verilog, V or Cog based on the first 200 # lines. export def FTv() diff --git a/runtime/doc/filetype.txt b/runtime/doc/filetype.txt --- a/runtime/doc/filetype.txt +++ b/runtime/doc/filetype.txt @@ -164,6 +164,7 @@ variables can be used to overrule the fi *.sys g:filetype_sys *.sh g:bash_is_sh |ft-sh-syntax| *.tex g:tex_flavor |ft-tex-plugin| + *.typ g:filetype_typ *.w g:filetype_w |ft-cweb-syntax| For a few filetypes the global variable is used only when the filetype could diff --git a/runtime/filetype.vim b/runtime/filetype.vim --- a/runtime/filetype.vim +++ b/runtime/filetype.vim @@ -2058,7 +2058,10 @@ au BufNewFile,BufRead *.spy,*.spi setf au BufNewFile,BufRead squid.conf setf squid " SQL for Oracle Designer -au BufNewFile,BufRead *.tyb,*.typ,*.tyc,*.pkb,*.pks setf sql +au BufNewFile,BufRead *.tyb,*.tyc,*.pkb,*.pks setf sql + +" *.typ can be either SQL or Typst files +au BufNewFile,BufRead *.typ call dist#ft#FTtyp() " SQL au BufNewFile,BufRead *.sql call dist#ft#SQL() diff --git a/src/testdir/test_filetype.vim b/src/testdir/test_filetype.vim --- a/src/testdir/test_filetype.vim +++ b/src/testdir/test_filetype.vim @@ -564,7 +564,7 @@ let s:filename_checks = { \ 'spice': ['file.sp', 'file.spice'], \ 'spup': ['file.speedup', 'file.spdata', 'file.spd'], \ 'spyce': ['file.spy', 'file.spi'], - \ 'sql': ['file.tyb', 'file.typ', 'file.tyc', 'file.pkb', 'file.pks'], + \ 'sql': ['file.tyb', 'file.tyc', 'file.pkb', 'file.pks'], \ 'sqlj': ['file.sqlj'], \ 'prql': ['file.prql'], \ 'sqr': ['file.sqr', 'file.sqi'], @@ -2047,4 +2047,35 @@ func Test_lsl_file() filetype off endfunc +func Test_typ_file() + filetype on + + " SQL type file + + call writefile(['CASE = LOWER'], 'Xfile.typ', 'D') + split Xfile.typ + call assert_equal('sql', &filetype) + bwipe! + + call writefile(['TYPE foo'], 'Xfile.typ') + split Xfile.typ + call assert_equal('sql', &filetype) + bwipe! + + " typst document + + call writefile(['this is a fallback'], 'Xfile.typ') + split Xfile.typ + call assert_equal('typst', &filetype) + bwipe! + + let g:filetype_typ = 'typst' + split test.typ + call assert_equal('typst', &filetype) + bwipe! + unlet g:filetype_typ + + filetype off +endfunc + " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -696,6 +696,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1539, +/**/ 1538, /**/ 1537,