Files
emmet-vim/autoload/emmet/lang.vim
Yasuhiro Matsumoto 7c44caa0e6 Refactoring
2026-03-07 11:08:24 +09:00

53 lines
1.2 KiB
VimL

let s:exists = {}
function! emmet#lang#exists(type) abort
if len(a:type) == 0
return 0
elseif has_key(s:exists, a:type)
return s:exists[a:type]
endif
let s:exists[a:type] = len(globpath(&rtp, 'autoload/emmet/lang/'.a:type.'.vim')) > 0
return s:exists[a:type]
endfunction
function! emmet#lang#type(type) abort
let l:type = a:type
let l:base = l:type
let l:settings = emmet#getSettings()
while l:base != ''
for l:b in split(l:base, '\.')
if emmet#lang#exists(l:b)
return l:b
endif
if has_key(l:settings, l:b) && has_key(l:settings[l:b], 'extends')
let l:base = l:settings[l:b].extends
break
else
let l:base = ''
endif
endfor
endwhile
return 'html'
endfunction
" get all extends for a type recursively
function! emmet#lang#getExtends(type) abort
let l:settings = emmet#getSettings()
if !has_key(l:settings[a:type], 'extends')
return []
endif
let l:extends = l:settings[a:type].extends
if type(l:extends) ==# 1
let l:tmp = split(l:extends, '\s*,\s*')
unlet! l:extends
let l:extends = l:tmp
endif
for l:ext in l:extends
let l:extends = l:extends + emmet#lang#getExtends(l:ext)
endfor
return l:extends
endfunction