44 lines
1.4 KiB
VimL
44 lines
1.4 KiB
VimL
" MIT License. Copyright (c) 2017-2021 YoungHoon Rhiu et al.
|
|
" vim: et ts=2 sts=2 sw=2
|
|
|
|
scriptencoding utf-8
|
|
|
|
if !exists('g:XkbSwitchLib') && !exists('*FcitxCurrentIM') && !has('nvim')
|
|
finish
|
|
endif
|
|
|
|
function! airline#extensions#xkblayout#status()
|
|
if exists('g:XkbSwitchLib')
|
|
let keyboard_layout = libcall(g:XkbSwitchLib, 'Xkb_Switch_getXkbLayout', '')
|
|
let keyboard_layout = get(split(keyboard_layout, '\.'), -1, '')
|
|
elseif exists('*FcitxCurrentIMwithRime')
|
|
let keyboard_layout = FcitxCurrentIMwithRime()
|
|
elseif exists('*FcitxCurrentIM')
|
|
let keyboard_layout = FcitxCurrentIM()
|
|
elseif has('nvim')
|
|
try
|
|
let keyboard_layout = luaeval('require"ime".current()')
|
|
catch /.*/
|
|
try
|
|
let keyboard_layout = luaeval('require"fcitx5-ui".displayCurrentIM()')
|
|
catch /.*/
|
|
let keyboard_layout = ''
|
|
endtry
|
|
endtry
|
|
else
|
|
let keyboard_layout = ''
|
|
endif
|
|
" substitute keyboard-us to us
|
|
let keyboard_layout = substitute(keyboard_layout, 'keyboard-', '', 'g')
|
|
|
|
let short_codes = get(g:, 'airline#extensions#xkblayout#short_codes', {'2SetKorean': 'KR', 'Chinese': 'CN', 'Japanese': 'JP'})
|
|
if has_key(short_codes, keyboard_layout)
|
|
let keyboard_layout = short_codes[keyboard_layout]
|
|
endif
|
|
|
|
return keyboard_layout
|
|
endfunction
|
|
|
|
function! airline#extensions#xkblayout#init(ext)
|
|
call airline#parts#define_function('xkblayout', 'airline#extensions#xkblayout#status')
|
|
endfunction
|