(Commit as [EMAIL PROTECTED], not [EMAIL PROTECTED])

I don't know if the idiom I made up for doing a mode keymap was reasonable.

gmail-label-go really ought to take a list of labels as a completion.
The greasemonkey script I use does this to get that list:

function getLabels() {
  var navPaneNode = gmail.getNavPaneElement();

  var labelNodes = getNodesByTagNameAndClass(
      navPaneNode, "div", LABEL_ITEM_CLASS_NAME);

  var labels = [];

  for (var i = 0, labelNode; labelNode = labelNodes[i]; i++) {
    var labelName = labelNode.textContent.replace(UNREAD_COUNT_RE, "");

    labels.push(labelName);
  }

  return labels;
}


In this context, "gmail" is the gmail API object loaded from the
gmonkey object described here:
http://code.google.com/p/gmail-greasemonkey/wiki/GmailGreasemonkey10API

I couldn't get that to work, though.  Maybe Conkeror doesn't have unsafeWindow?

--dave

On Sat, Apr 5, 2008 at 12:04 AM, David Glasser <[EMAIL PROTECTED]> wrote:
> From: David Glasser <[EMAIL PROTECTED]>
>
>  ---
>   modules/conkeror.js         |    1 +
>   modules/page-modes/gmail.js |   26 ++++++++++++++++++++++++++
>   2 files changed, 27 insertions(+), 0 deletions(-)
>   create mode 100644 modules/page-modes/gmail.js
>
>  diff --git a/modules/conkeror.js b/modules/conkeror.js
>  index 898f2c4..0cecf9f 100644
>  --- a/modules/conkeror.js
>  +++ b/modules/conkeror.js
>  @@ -55,6 +55,7 @@ require("ssl.js");
>   require("media.js");
>   require("page-modes/youtube.js");
>   require("page-modes/google-video.js");
>  +require("page-modes/gmail.js");
>
>   //require("scroll-bars.js");
>
>  diff --git a/modules/page-modes/gmail.js b/modules/page-modes/gmail.js
>  new file mode 100644
>  index 0000000..edeaac6
>  --- /dev/null
>  +++ b/modules/page-modes/gmail.js
>  @@ -0,0 +1,26 @@
>  +require("content-buffer.js");
>  +require("bindings/default/content-buffer/normal.js");
>  +
>  +var gmail_keymap = new keymap($parent = content_buffer_normal_keymap);
>  +
>  +function gmail_label_go(buffer, label)
>  +{
>  +    buffer.window.content.location.hash = "#label/" + 
> encodeURIComponent(label);
>  +}
>  +interactive("gmail-label-go",
>  +            "Go to a GMail label.",
>  +            function(I) {
>  +              gmail_label_go(I.buffer, (yield I.minibuffer.read($prompt = 
> "Go to label: ")));
>  +            });
>  +
>  +define_key(gmail_keymap, "C-c g", "gmail-label-go");
>  +
>  +define_page_mode("gmail_mode", "GMail", $enable = function (buffer) {
>  +                   buffer.local_variables.content_buffer_normal_keymap = 
> gmail_keymap;
>  +                   buffer.keymap = gmail_keymap;
>  +                 }, $disable = function (buffer) {
>  +                   delete 
> buffer.local_variables.content_buffer_normal_keymap;
>  +                   buffer.keymap = content_buffer_normal_keymap;
>  +                 });
>  +
>  +auto_mode_list.push([/^https?:\/\/mail\.google\.com\//, gmail_mode]);
>  --
>  1.5.4.3
>
>  _______________________________________________
>  Conkeror mailing list
>  [email protected]
>  https://www.mozdev.org/mailman/listinfo/conkeror
>



-- 
David Glasser | [EMAIL PROTECTED] | http://www.davidglasser.net/
_______________________________________________
Conkeror mailing list
[email protected]
https://www.mozdev.org/mailman/listinfo/conkeror

Reply via email to