blob: 6c94cd34ea7f30e389213c04d1f2b29cf2fe2a47 [file] [log] [blame]
Bram Moolenaarf10911e2022-01-29 22:20:48 +00001" Vim filetype plugin file
2" Language: FreeBASIC
3" Maintainer: Doug Kearns <dougkearns@gmail.com>
Bram Moolenaar0d878b92022-07-01 18:45:04 +01004" Last Change: 2022 June 24
Bram Moolenaarf10911e2022-01-29 22:20:48 +00005
6" Dialects can be one of fb, qb, fblite, or deprecated
7" Precedence is forcelang > #lang > lang
8function! freebasic#GetDialect() abort
9 if exists("g:freebasic_forcelang")
10 return g:freebasic_forcelang
11 endif
12
13 if exists("g:freebasic_lang")
14 let dialect = g:freebasic_lang
15 else
16 let dialect = "fb"
17 endif
18
19 " override with #lang directive or metacommand
20
Bram Moolenaarf10911e2022-01-29 22:20:48 +000021 let pat = '\c^\s*\%(#\s*lang\s\+\|''\s*$lang\s*:\s*\)"\([^"]*\)"'
22
23 let save_cursor = getcurpos()
24 call cursor(1, 1)
Bram Moolenaar0d878b92022-07-01 18:45:04 +010025 let lnum = search(pat, 'cn')
Bram Moolenaarf10911e2022-01-29 22:20:48 +000026 call setpos('.', save_cursor)
27
28 if lnum
29 let word = matchlist(getline(lnum), pat)[1]
Bram Moolenaar0d878b92022-07-01 18:45:04 +010030 if word =~? '\<\%(fb\|deprecated\|fblite\|qb\)\>'
Bram Moolenaarf10911e2022-01-29 22:20:48 +000031 let dialect = word
32 else
33 echomsg "freebasic#GetDialect: Invalid lang, found '" .. word .. "' at line " .. lnum .. " " .. getline(lnum)
34 endif
35 endif
36
37 return dialect
38endfunction
39
40" vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker: