about summary refs log tree commit diff
path: root/vim/.vim/bundle/stime/autoload/stime.vim
blob: 6645e66456d0d3d8def2b4491da355a65e3d030a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
function! stime#LoadTable(table)
  if filereadable(a:table)
    let table = a:table
  else
    for i in split(&runtimepath, ',')
      let path = i . "/tables/" . a:table
      if filereadable(path)
        let table = path
        break
      endif
    endfor
    if !exists("table")
      echoerr "Input table not found"
    endif
  endif
  let l = []
  let f = readfile(table) 
  let [begun, ended] = [0, 0]
  for i in range(len(f))
    let line = f[i]
    if begun
      if line == 'END_TABLE'
        let ended = 1
        break
      endif
      if line != '' && line[:2] != '###'
        let row = split(line)[:1]
        if len(row) < 2
          echoerr 'File "' . table . '", line ' . (i + 1) . ': no phrase after input_keys found'
        else
          call add(l, split(line)[:1])
        endif
      endif
    else
      if line == 'BEGIN_TABLE'
        let begun = 1
      else
        silent! execute "let " . line
      endif
    endif
  endfor
  if !begun
    echoerr 'File "' . table . '", line ' . (i + 1) . ': BEGIN_TABLE not found'
  elseif !ended
    echoerr 'File "' . table . '", line ' . (i + 1) . ': END_TABLE not found'
  endif
  if exists("ESCAPE_CHAR")
    call add(l, [ESCAPE_CHAR, '<Nop>'])
    call add(l, [ESCAPE_CHAR . ESCAPE_CHAR, ESCAPE_CHAR])
  endif
  if !exists("NAME")
    let NAME = table
  endif
  return [NAME, l]
endfunction

function! stime#Toggle(reloadmapping)
  if exists("b:stime")
    for i in b:stime
      execute "unmap! <buffer>" i
    endfor
    unlet b:stime
    echomsg "Stime is off"
  else
    if !exists("s:time_mappings") || a:reloadmapping
      let [s:time_im, s:time_mappings] = stime#LoadTable(g:stime_table)
    endif
    let b:stime = []
    for [i, j] in s:time_mappings " This plugin cannot yet handle frequencies
      execute "noremap! <buffer>" i j
      call add(b:stime, i)
    endfor
    echomsg "Stime is on. Input table: " . s:time_im
  endif
endfunction