|
|
@ -499,33 +499,61 @@ local function ft_disabled(ft)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
local ft_map = {
|
|
|
|
|
|
|
|
js = 'javascript',
|
|
|
|
|
|
|
|
ts = 'typescript',
|
|
|
|
|
|
|
|
jsx = 'javascriptreact',
|
|
|
|
|
|
|
|
tsx = 'typescriptreact',
|
|
|
|
|
|
|
|
mod = 'gomod',
|
|
|
|
|
|
|
|
cxx = 'cpp',
|
|
|
|
|
|
|
|
chh = 'cpp',
|
|
|
|
|
|
|
|
hs = 'haskell',
|
|
|
|
|
|
|
|
pl = 'perl',
|
|
|
|
|
|
|
|
rs = 'rust',
|
|
|
|
|
|
|
|
rb = 'ruby',
|
|
|
|
|
|
|
|
py = 'python',
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
local function setup(user_opts, cnt)
|
|
|
|
local function setup(user_opts, cnt)
|
|
|
|
user_opts = user_opts or {}
|
|
|
|
user_opts = user_opts or {}
|
|
|
|
local ft = vim.bo.filetype
|
|
|
|
local ft = vim.bo.filetype
|
|
|
|
local bufnr = user_opts.bufnr or vim.api.nvim_get_current_buf()
|
|
|
|
local bufnr = user_opts.bufnr or vim.api.nvim_get_current_buf()
|
|
|
|
|
|
|
|
cnt = cnt or 0
|
|
|
|
if ft == '' or ft == nil then
|
|
|
|
if ft == '' or ft == nil then
|
|
|
|
log('nil filetype, callback')
|
|
|
|
log('nil filetype, callback',vim.fn.expand('%'), cnt)
|
|
|
|
local ext = vfn.expand('%:e')
|
|
|
|
local ext = vfn.expand('%:e')
|
|
|
|
|
|
|
|
if ext ~= '' and cnt >= 2 then
|
|
|
|
|
|
|
|
local ft = ft_map[ext] or ft or ext or 'txt'
|
|
|
|
|
|
|
|
log('set ft', ft)
|
|
|
|
|
|
|
|
vim.cmd('setlocal ft=' .. ft)
|
|
|
|
|
|
|
|
vim.cmd('setlocal syntax=on')
|
|
|
|
|
|
|
|
-- goto break
|
|
|
|
|
|
|
|
goto continue
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
local opt
|
|
|
|
|
|
|
|
if cnt > 0 then
|
|
|
|
|
|
|
|
opt = user_opts
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
opts = vim.deepcopy(user_opts)
|
|
|
|
|
|
|
|
end
|
|
|
|
if ext ~= '' then
|
|
|
|
if ext ~= '' then
|
|
|
|
cnt = cnt or 0
|
|
|
|
|
|
|
|
local opts = vim.deepcopy(user_opts)
|
|
|
|
|
|
|
|
if cnt > 3 then
|
|
|
|
if cnt > 3 then
|
|
|
|
log('failed to load filetype, skip')
|
|
|
|
log('failed to load filetype, skip')
|
|
|
|
return
|
|
|
|
return
|
|
|
|
else
|
|
|
|
|
|
|
|
cnt = cnt + 1
|
|
|
|
|
|
|
|
end
|
|
|
|
end
|
|
|
|
vim.defer_fn(function()
|
|
|
|
if cnt < 4 then
|
|
|
|
log('defer_fn', ext, ft)
|
|
|
|
vim.defer_fn(function()
|
|
|
|
setup(opts, cnt)
|
|
|
|
log('defer_fn', ext, ft)
|
|
|
|
end, 200)
|
|
|
|
setup(opts, cnt + 1)
|
|
|
|
|
|
|
|
end, 200)
|
|
|
|
return
|
|
|
|
return
|
|
|
|
|
|
|
|
end
|
|
|
|
else
|
|
|
|
else
|
|
|
|
log('no filetype, no ext return')
|
|
|
|
log('no filetype, no ext return')
|
|
|
|
return
|
|
|
|
return
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
::continue::
|
|
|
|
local uri = vim.uri_from_bufnr(bufnr)
|
|
|
|
local uri = vim.uri_from_bufnr(bufnr)
|
|
|
|
|
|
|
|
|
|
|
|
if uri == 'file://' or uri == 'file:///' then
|
|
|
|
if uri == 'file://' or uri == 'file:///' then
|
|
|
|