diff options
| author | Jez Ng | 2012-10-26 13:27:37 -0400 | 
|---|---|---|
| committer | Jez Ng | 2012-10-29 18:28:46 -0400 | 
| commit | aeb455a577c0a20684f357ff737203b5cb419cd4 (patch) | |
| tree | 184db85bb1569360854c4c2814634f1c580efe9b /content_scripts | |
| parent | 76622cd99cf671531cfa21c5d6243f3e4e185116 (diff) | |
| download | vimium-aeb455a577c0a20684f357ff737203b5cb419cd4.tar.bz2 | |
Implement marks.
Diffstat (limited to 'content_scripts')
| -rw-r--r-- | content_scripts/marks.coffee | 45 | ||||
| -rw-r--r-- | content_scripts/vimium_frontend.coffee | 3 | 
2 files changed, 47 insertions, 1 deletions
diff --git a/content_scripts/marks.coffee b/content_scripts/marks.coffee new file mode 100644 index 00000000..e280a3b1 --- /dev/null +++ b/content_scripts/marks.coffee @@ -0,0 +1,45 @@ +root = window.Marks = {} + +root.activateCreateMode = -> +  handlerStack.push keydown: (e) -> +    keyChar = KeyboardUtils.getKeyChar(event) +    return unless keyChar isnt "" + +    if /[A-Z]/.test keyChar +      chrome.extension.sendRequest { +        handler: 'createMark', +        markName: keyChar +        scrollX: window.scrollX, +        scrollY: window.scrollY +      }, -> HUD.showForDuration "Created global mark '#{keyChar}'", 1000 +    else if /[a-z]/.test keyChar +      [baseLocation, sep, hash] = window.location.href.split '#' +      localStorage["vimiumMark|#{baseLocation}|#{keyChar}"] = JSON.stringify +        scrollX: window.scrollX, +        scrollY: window.scrollY +      HUD.showForDuration "Created local mark '#{keyChar}'", 1000 + +    @remove() + +    false + +root.activateGotoMode = -> +  handlerStack.push keydown: (e) -> +    keyChar = KeyboardUtils.getKeyChar(event) +    return unless keyChar isnt "" + +    if /[A-Z]/.test keyChar +      chrome.extension.sendRequest +        handler: 'gotoMark' +        markName: keyChar +    else if /[a-z]/.test keyChar +      [baseLocation, sep, hash] = window.location.href.split '#' +      markString = localStorage["vimiumMark|#{baseLocation}|#{keyChar}"] +      if markString? +        mark = JSON.parse markString +        window.scrollTo mark.scrollX, mark.scrollY +        HUD.showForDuration "Jumped to local mark '#{keyChar}'", 1000 + +    @remove() + +    false diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index 026b0c15..5493d6dc 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -108,6 +108,7 @@ initializePreDomReady = ->    requestHandlers =      hideUpgradeNotification: -> HUD.hideUpgradeNotification()      showUpgradeNotification: (request) -> HUD.showUpgradeNotification(request.version) +    showHUDforDuration: (request) -> HUD.showForDuration request.text, request.duration      toggleHelpDialog: (request) -> toggleHelpDialog(request.dialogHtml, request.frameId)      focusFrame: (request) -> if (frameId == request.frameId) then focusThisFrame(request.highlight)      refreshCompletionKeys: refreshCompletionKeys @@ -203,7 +204,7 @@ executePageCommand = (request) ->  setScrollPosition = (scrollX, scrollY) ->    if (scrollX > 0 || scrollY > 0) -    DomUtils.documentReady(-> window.scrollBy(scrollX, scrollY)) +    DomUtils.documentReady(-> window.scrollTo(scrollX, scrollY))  #  # Called from the backend in order to change frame focus.  | 
