nrrwrgn.vim 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. " MIT License. Copyright (c) 2013-2021 Bailey Ling, Christian Brabandt et al.
  2. " Plugin: https://github.com/chrisbra/NrrwRgn
  3. " vim: et ts=2 sts=2 sw=2
  4. scriptencoding utf-8
  5. if !get(g:, 'loaded_nrrw_rgn', 0)
  6. finish
  7. endif
  8. function! airline#extensions#nrrwrgn#apply(...)
  9. if exists(":WidenRegion") == 2
  10. let spc = g:airline_symbols.space
  11. if !exists("*nrrwrgn#NrrwRgnStatus()") || empty(nrrwrgn#NrrwRgnStatus())
  12. call a:1.add_section('airline_a', printf('%s[Narrowed%s#%d]', spc, spc, b:nrrw_instn))
  13. let bufname=(get(b:, 'orig_buf', 0) ? bufname(b:orig_buf) : substitute(bufname('%'), '^Nrrwrgn_\zs.*\ze_\d\+$', submatch(0), ''))
  14. call a:1.add_section('airline_c', spc.bufname.spc)
  15. call a:1.split()
  16. else
  17. let dict=nrrwrgn#NrrwRgnStatus()
  18. let vmode = { 'v': 'Char ', 'V': 'Line ', '': 'Block '}
  19. let mode = dict.visual ? vmode[dict.visual] : vmode['V']
  20. let winwidth = airline#util#winwidth()
  21. if winwidth < 80
  22. let mode = mode[0]
  23. endif
  24. let title = (winwidth < 80 ? "Nrrw" : "Narrowed ")
  25. let multi = (winwidth < 80 ? 'M' : 'Multi')
  26. call a:1.add_section('airline_a', printf('[%s%s%s#%d]%s', (dict.multi ? multi : ""),
  27. \ title, mode, b:nrrw_instn, spc))
  28. let name = dict.fullname
  29. if name !=# '[No Name]'
  30. if winwidth > 100
  31. " need some space
  32. let name = fnamemodify(dict.fullname, ':~')
  33. if strlen(name) > 8
  34. " shorten name
  35. let name = substitute(name, '\(.\)[^/\\]*\([/\\]\)', '\1\2', 'g')
  36. endif
  37. else
  38. let name = fnamemodify(dict.fullname, ':t')
  39. endif
  40. endif
  41. let range=(dict.multi ? '' : printf("[%d-%d]", dict.start[1], dict.end[1]))
  42. call a:1.add_section('airline_c', printf("%s %s %s", name, range,
  43. \ dict.enabled ? (&encoding ==? 'utf-8' ? "\u2713" : '') : '!'))
  44. call a:1.split()
  45. call a:1.add_section('airline_x', get(g:, 'airline_section_x').spc)
  46. call a:1.add_section('airline_y', spc.get(g:, 'airline_section_y').spc)
  47. call a:1.add_section('airline_z', spc.get(g:, 'airline_section_z'))
  48. endif
  49. return 1
  50. endif
  51. endfunction
  52. function! airline#extensions#nrrwrgn#init(ext)
  53. call a:ext.add_statusline_func('airline#extensions#nrrwrgn#apply')
  54. endfunction