xkblayout.vim 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. " MIT License. Copyright (c) 2017-2021 YoungHoon Rhiu et al.
  2. " vim: et ts=2 sts=2 sw=2
  3. scriptencoding utf-8
  4. if !exists('g:XkbSwitchLib') && !exists('*FcitxCurrentIM') && !has('nvim')
  5. finish
  6. endif
  7. function! airline#extensions#xkblayout#status()
  8. if exists('g:XkbSwitchLib')
  9. let keyboard_layout = libcall(g:XkbSwitchLib, 'Xkb_Switch_getXkbLayout', '')
  10. let keyboard_layout = get(split(keyboard_layout, '\.'), -1, '')
  11. elseif exists('*FcitxCurrentIMwithRime')
  12. let keyboard_layout = FcitxCurrentIMwithRime()
  13. elseif exists('*FcitxCurrentIM')
  14. let keyboard_layout = FcitxCurrentIM()
  15. elseif has('nvim')
  16. try
  17. let keyboard_layout = luaeval('require"ime".current()')
  18. catch /.*/
  19. try
  20. let keyboard_layout = luaeval('require"fcitx5-ui".displayCurrentIM()')
  21. catch /.*/
  22. let keyboard_layout = ''
  23. endtry
  24. endtry
  25. else
  26. let keyboard_layout = ''
  27. endif
  28. " substitute keyboard-us to us
  29. let keyboard_layout = substitute(keyboard_layout, 'keyboard-', '', 'g')
  30. let short_codes = get(g:, 'airline#extensions#xkblayout#short_codes', {'2SetKorean': 'KR', 'Chinese': 'CN', 'Japanese': 'JP'})
  31. if has_key(short_codes, keyboard_layout)
  32. let keyboard_layout = short_codes[keyboard_layout]
  33. endif
  34. return keyboard_layout
  35. endfunction
  36. function! airline#extensions#xkblayout#init(ext)
  37. call airline#parts#define_function('xkblayout', 'airline#extensions#xkblayout#status')
  38. endfunction