patch 9.0.1438: .fs files are falsely recognized as forth files

Problem:    .fs files are falsely recognized as forth files.
Solution:   Check 100 lines for something that looks like forth. (Johan
            Kotlinski, closes #12219, closes #11988)
This commit is contained in:
Johan Kotlinski
2023-04-02 20:29:38 +01:00
committed by Bram Moolenaar
parent 3cdd799951
commit 065088d554
3 changed files with 12 additions and 24 deletions

View File

@ -307,14 +307,16 @@ export def FTfs()
if exists("g:filetype_fs") if exists("g:filetype_fs")
exe "setf " .. g:filetype_fs exe "setf " .. g:filetype_fs
else else
var line = getline(nextnonblank(1)) var n = 1
# comments and colon definitions while n < 100 && n <= line("$")
if line =~ '^\s*\.\=( ' || line =~ '^\s*\\G\= ' || line =~ '^\\$' # Forth comments and colon definitions
\ || line =~ '^\s*: \S' if getline(n) =~ "^[:(\\\\] "
setf forth setf forth
else return
setf fsharp endif
endif n += 1
endwhile
setf fsharp
endif endif
enddef enddef

View File

@ -1212,27 +1212,11 @@ func Test_fs_file()
call assert_equal('forth', &filetype) call assert_equal('forth', &filetype)
bwipe! bwipe!
call writefile(['.( Forth displayed inline comment )'], 'Xfile.fs')
split Xfile.fs
call assert_equal('forth', &filetype)
bwipe!
call writefile(['\ Forth line comment'], 'Xfile.fs') call writefile(['\ Forth line comment'], 'Xfile.fs')
split Xfile.fs split Xfile.fs
call assert_equal('forth', &filetype) call assert_equal('forth', &filetype)
bwipe! bwipe!
" empty line comment - no space required
call writefile(['\'], 'Xfile.fs')
split Xfile.fs
call assert_equal('forth', &filetype)
bwipe!
call writefile(['\G Forth documentation comment '], 'Xfile.fs')
split Xfile.fs
call assert_equal('forth', &filetype)
bwipe!
call writefile([': squared ( n -- n^2 )', 'dup * ;'], 'Xfile.fs') call writefile([': squared ( n -- n^2 )', 'dup * ;'], 'Xfile.fs')
split Xfile.fs split Xfile.fs
call assert_equal('forth', &filetype) call assert_equal('forth', &filetype)

View File

@ -695,6 +695,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
1438,
/**/ /**/
1437, 1437,
/**/ /**/