]> git.gir.st - VimFx.git/blob - extension/packages/hints.coffee
Merge branch 'release-0.4'
[VimFx.git] / extension / packages / hints.coffee
1 CONTAINER_ID = 'VimFxHintMarkerContainer'
2
3 { interfaces: Ci } = Components
4 HTMLDocument = Ci.nsIDOMHTMLDocument
5 { Marker } = require 'marker'
6
7 createHintsContainer = (document) ->
8 container = document.createElement 'div'
9 container.id = CONTAINER_ID
10 container.className = 'VimFxReset'
11 return container
12
13 # Creates and injects hint markers into the DOM
14 injectHints = (document) ->
15 # First remove previous hints container
16 removeHints document
17
18 if document instanceof HTMLDocument and document.documentElement
19 # Find and create markers
20 markers = Marker.createMarkers document
21
22 container = createHintsContainer document
23
24 # For performance use Document Fragment
25 fragment = document.createDocumentFragment()
26 for marker in markers
27 fragment.appendChild marker.markerElement
28
29 container.appendChild fragment
30 document.documentElement.appendChild container
31
32 return markers
33
34 # Remove previously injected hints from the DOM
35 removeHints = (document, markers) ->
36 if container = document.getElementById CONTAINER_ID
37 document.documentElement.removeChild container
38
39
40 exports.injectHints = injectHints
41 exports.removeHints = removeHints
Imprint / Impressum