1 <!DOCTYPE html
> <html> <head> <title>vim.coffee
</title> <meta http-equiv=
"content-type" content=
"text/html; charset=UTF-8"> <link rel=
"stylesheet" media=
"all" href=
"docco.css" /> </head> <body> <div id=
"container"> <div id=
"background"></div> <div id=
"jump_to"> Jump To
… <div id=
"jump_wrapper"> <div id=
"jump_page"> <a class=
"source" href=
"bootstrap.html"> bootstrap.coffee
</a> <a class=
"source" href=
"chrome.html"> chrome.coffee
</a> <a class=
"source" href=
"console.html"> console.coffee
</a> <a class=
"source" href=
"unload.html"> unload.coffee
</a> <a class=
"source" href=
"window-utils.html"> window-utils.coffee
</a> <a class=
"source" href=
"button.html"> button.coffee
</a> <a class=
"source" href=
"commands.html"> commands.coffee
</a> <a class=
"source" href=
"events.html"> events.coffee
</a> <a class=
"source" href=
"help.html"> help.coffee
</a> <a class=
"source" href=
"hints.html"> hints.coffee
</a> <a class=
"source" href=
"marker.html"> marker.coffee
</a> <a class=
"source" href=
"prefs.html"> prefs.coffee
</a> <a class=
"source" href=
"utils.html"> utils.coffee
</a> <a class=
"source" href=
"vim.html"> vim.coffee
</a> </div> </div> </div> <table cellpadding=
"0" cellspacing=
"0"> <thead> <tr> <th class=
"docs"> <h1> vim.coffee
</h1> </th> <th class=
"code"> </th> </tr> </thead> <tbody> <tr id=
"section-1"> <td class=
"docs"> <div class=
"pilwrap"> <a class=
"pilcrow" href=
"#section-1">¶</a> </div> </td> <td class=
"code"> <div class=
"highlight"><pre><span class=
"p">{
</span> <span class=
"nx">getWindowId
</span><span class=
"p">,
</span> <span class=
"nx">Bucket
</span> <span class=
"p">}
</span> <span class=
"o">=
</span> <span class=
"nx">require
</span> <span class=
"s">'utils
'</span>
3 <span class=
"p">{
</span> <span class=
"nx">commands
</span><span class=
"p">,
</span>
4 <span class=
"nx">hintCharHandler
</span>
5 <span class=
"p">}
</span> <span class=
"o">=
</span> <span class=
"nx">require
</span> <span class=
"s">'commands
'</span>
7 <span class=
"nv">MODE_NORMAL =
</span><span class=
"mi">1</span>
8 <span class=
"nv">MODE_HINTS =
</span><span class=
"mi">2</span>
10 <span class=
"k">class
</span> <span class=
"nx">Vim
</span>
11 <span class=
"nv">constructor:
</span><span class=
"nf">(@window) -
></span>
12 <span class=
"vi">@mode =
</span><span class=
"nx">MODE_NORMAL
</span>
13 <span class=
"vi">@keys =
</span><span class=
"p">[]
</span>
14 <span class=
"vi">@markers =
</span><span class=
"kc">undefined
</span>
15 <span class=
"vi">@cb =
</span><span class=
"kc">undefined
</span>
17 <span class=
"nv">pushKey:
</span><span class=
"nf">(keyStr) -
></span>
18 <span class=
"k">if
</span> <span class=
"nx">_maybeCommand
</span><span class=
"p">(
</span><span class=
"nx">@mode
</span><span class=
"p">,
</span> <span class=
"nx">@keys
</span><span class=
"p">,
</span> <span class=
"nx">keyStr
</span><span class=
"p">)
</span>
19 <span class=
"nx">@keys
</span><span class=
"p">.
</span><span class=
"nx">push
</span> <span class=
"nx">keyStr
</span>
20 <span class=
"k">return
</span> <span class=
"kc">true
</span>
22 <span class=
"k">return
</span> <span class=
"kc">false
</span>
24 <span class=
"nv">execKeys:
</span><span class=
"o">-
></span>
25 <span class=
"k">if
</span> <span class=
"nv">command =
</span><span class=
"nx">_getCommand
</span><span class=
"p">(
</span><span class=
"nx">@mode
</span><span class=
"p">,
</span> <span class=
"nx">@keys
</span><span class=
"p">)
</span>
26 <span class=
"nv">lastKey =
</span><span class=
"nx">@keys
</span><span class=
"p">[
</span><span class=
"nx">@keys
</span><span class=
"p">.
</span><span class=
"nx">length
</span> <span class=
"o">-
</span> <span class=
"mi">1</span><span class=
"p">]
</span>
27 <span class=
"nx">command
</span> <span class=
"nx">@
</span>
28 <span class=
"vi">@keys =
</span><span class=
"p">[]
</span>
29 <span class=
"k">return
</span> <span class=
"nx">lastKey
</span> <span class=
"o">!=
</span> <span class=
"s">'Esc
'</span>
31 <span class=
"nv">enterHintsMode:
</span><span class=
"nf">() -
></span>
32 <span class=
"vi">@mode =
</span><span class=
"nx">MODE_HINTS
</span>
34 <span class=
"nv">enterNormalMode:
</span><span class=
"nf">() -
></span>
35 <span class=
"vi">@markers = @cb =
</span><span class=
"kc">undefined
</span>
37 <span class=
"vi">@mode =
</span><span class=
"nx">MODE_NORMAL
</span>
39 <span class=
"nv">_getCommand =
</span><span class=
"nf">(mode, keys) -
></span>
40 <span class=
"nv">lastKey =
</span><span class=
"nx">keys
</span><span class=
"p">[
</span><span class=
"nx">keys
</span><span class=
"p">.
</span><span class=
"nx">length
</span> <span class=
"o">-
</span> <span class=
"mi">1</span><span class=
"p">]
</span>
42 <span class=
"k">if
</span> <span class=
"nx">mode
</span> <span class=
"o">==
</span> <span class=
"nx">MODE_NORMAL
</span> <span class=
"o">or
</span> <span class=
"nx">lastKey
</span> <span class=
"o">==
</span> <span class=
"s">'Esc
'</span>
43 <span class=
"nv">sequence =
</span><span class=
"nx">keys
</span><span class=
"p">.
</span><span class=
"nx">join
</span><span class=
"p">(
</span><span class=
"s">',
'</span><span class=
"p">)
</span>
44 <span class=
"k">if
</span> <span class=
"nv">command =
</span><span class=
"nx">commands
</span><span class=
"p">[
</span><span class=
"nx">sequence
</span><span class=
"p">]
</span>
45 <span class=
"k">return
</span> <span class=
"nx">command
</span>
46 <span class=
"k">else
</span> <span class=
"k">if
</span> <span class=
"nx">keys
</span><span class=
"p">.
</span><span class=
"nx">length
</span> <span class=
"o">></span> <span class=
"mi">0</span>
47 <span class=
"k">return
</span> <span class=
"nx">_getCommand
</span> <span class=
"nx">mode
</span><span class=
"p">,
</span> <span class=
"nx">keys
</span><span class=
"p">.
</span><span class=
"nx">slice
</span><span class=
"p">(
</span><span class=
"mi">1</span><span class=
"p">)
</span>
49 <span class=
"k">else
</span> <span class=
"k">if
</span> <span class=
"nx">mode
</span> <span class=
"o">==
</span> <span class=
"nx">MODE_HINTS
</span> <span class=
"o">and
</span> <span class=
"nx">keys
</span><span class=
"p">.
</span><span class=
"nx">length
</span> <span class=
"o">></span> <span class=
"mi">0</span></pre></div> </td> </tr> <tr id=
"section-2"> <td class=
"docs"> <div class=
"pilwrap"> <a class=
"pilcrow" href=
"#section-2">¶</a> </div> <p><code>lastKey
</code> should be one hint chars or
<code>Backspace
</code></p> </td> <td class=
"code"> <div class=
"highlight"><pre> <span class=
"nv">hintChars =
</span><span class=
"nx">getPref
</span><span class=
"p">(
</span><span class=
"s">'hint_chars
'</span><span class=
"p">)
</span> <span class=
"o">+
</span> <span class=
"s">'backspace
'</span>
50 <span class=
"k">if
</span> <span class=
"nx">hintChars
</span><span class=
"p">.
</span><span class=
"nx">search
</span><span class=
"p">(
</span><span class=
"nx">lastKey
</span><span class=
"p">.
</span><span class=
"nx">toLowerCase
</span><span class=
"p">())
</span> <span class=
"o">></span> <span class=
"o">-
</span><span class=
"mi">1</span>
51 <span class=
"k">return
</span> <span class=
"p">(
</span><span class=
"nx">vim
</span><span class=
"p">)
</span> <span class=
"o">=
></span>
52 <span class=
"k">return
</span> <span class=
"nx">hintCharHandler
</span><span class=
"p">(
</span><span class=
"nx">vim
</span><span class=
"p">,
</span> <span class=
"nx">lastKey
</span><span class=
"p">.
</span><span class=
"nx">toLowerCase
</span><span class=
"p">())
</span>
54 <span class=
"k">return
</span> <span class=
"kc">undefined
</span>
56 <span class=
"nv">_maybeCommand =
</span><span class=
"nf">(mode, keys, keyStr) -
></span>
57 <span class=
"k">if
</span> <span class=
"nx">mode
</span> <span class=
"o">==
</span> <span class=
"nx">MODE_NORMAL
</span> <span class=
"o">||
</span> <span class=
"nx">keyStr
</span> <span class=
"o">==
</span> <span class=
"s">'Esc
'</span>
58 <span class=
"nv">sequence =
</span><span class=
"nx">keys
</span><span class=
"p">.
</span><span class=
"nx">concat
</span><span class=
"p">([
</span><span class=
"nx">keyStr
</span><span class=
"p">]).
</span><span class=
"nx">join
</span><span class=
"p">(
</span><span class=
"s">',
'</span><span class=
"p">)
</span>
59 <span class=
"k">for
</span> <span class=
"nx">commandSequence
</span> <span class=
"k">in
</span> <span class=
"nb">Object
</span><span class=
"p">.
</span><span class=
"nx">keys
</span><span class=
"p">(
</span><span class=
"nx">commands
</span><span class=
"p">)
</span>
60 <span class=
"k">if
</span> <span class=
"nx">commandSequence
</span><span class=
"p">.
</span><span class=
"nx">search
</span><span class=
"p">(
</span><span class=
"nx">sequence
</span><span class=
"p">)
</span> <span class=
"o">==
</span> <span class=
"mi">0</span>
61 <span class=
"k">return
</span> <span class=
"kc">true
</span>
63 <span class=
"k">if
</span> <span class=
"nx">keys
</span><span class=
"p">.
</span><span class=
"nx">length
</span> <span class=
"o">></span> <span class=
"mi">0</span>
64 <span class=
"k">return
</span> <span class=
"nx">_maybeCommand
</span> <span class=
"nx">mode
</span><span class=
"p">,
</span> <span class=
"nx">keys
</span><span class=
"p">.
</span><span class=
"nx">slice
</span><span class=
"p">(
</span><span class=
"mi">1</span><span class=
"p">),
</span> <span class=
"nx">keyStr
</span>
66 <span class=
"k">else
</span> <span class=
"k">if
</span> <span class=
"nx">mode
</span> <span class=
"o">==
</span> <span class=
"nx">MODE_HINTS
</span>
67 <span class=
"k">return
</span> <span class=
"kc">true
</span>
69 <span class=
"k">return
</span> <span class=
"kc">false
</span>
71 <span class=
"nv">exports.Vim =
</span><span class=
"nx">Vim
</span>
73 </pre></div> </td> </tr> </tbody> </table> </div> </body> </html>