all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Daniel Colascione <danc@merrillpress.com>
To: Lennart Borgman <lennart.borgman@gmail.com>
Cc: Chong Yidong <cyd@stupidchicken.com>,
	ferkiwi+a@gmail.com, joakim@verona.se, emacs-devel@gnu.org
Subject: Re: Why Emacs should have a good web-browser
Date: Thu, 13 Aug 2009 18:54:33 -0400	[thread overview]
Message-ID: <2154954C-8DB3-42DA-8CAA-A297B16E250A@merrillpress.com> (raw)
In-Reply-To: <e01d8a50907081542v109cec56ydfee37ced723577f@mail.gmail.com>

On Jul 8, 2009, at 6:42 PM, Lennart Borgman wrote:
> BTW, I have heard that espresso offers even better interaction than
> MozRepl but I am not sure. Is there anyone who knows more about this?
> Some examples of how to interact from Espresso/MozRepl?


Here is an example of some code from espresso (after the rename to js- 
mode). I hope the JS interaction  is self-explanatory, at least for  
the purpose of discussion.

(FWIW, maybe the elisp<->js bridge really should be moved to moz.el?)

(defun js--get-tabs ()
   "Enumerate all the contexts available. Each one is a list:

    The list is (TITLE URL BROWSER TAB TABBROWSER) for content documents
    The list is (TITLE URL WINDOW) for windows

    All tabs of a given window are grouped together. The most
    recent window is first. Within each window, the tabs are
    returned left-to-right.
"
   (with-js
    (let (windows)

      (loop with window-mediator = (js! ("Components" "classes"
                                         "@mozilla.org/appshell/window- 
mediator;1"
                                         "getService")
                                        (js< "Components" "interfaces"
                                             "nsIWindowMediator"))
            with enumerator = (js! (window-mediator "getEnumerator")  
nil)

            while (js? (js! (enumerator "hasMoreElements")))
            for window = (js! (enumerator "getNext"))
            for window-info = (js-list window
                                       (js< window "document" "title")
                                       (js! (window "location"  
"toString"))
                                       (js< window "closed")
                                       (js< window "windowState"))

            unless (or (js? (fourth window-info))
                       (eq (fifth window-info) 2))
            do (push window-info windows))

      (loop for window-info in windows
            for window = (first window-info)
            collect (list (second window-info)
                          (third window-info)
                          window)

            for gbrowser = (js< window "gBrowser")
            if (js-handle? gbrowser)
            nconc (loop
                   for x below (js< gbrowser "browsers" "length")
                   collect (js-list (js< gbrowser
                                         "browsers"
                                         x
                                         "contentDocument"
                                         "title")

                                    (js! (gbrowser
                                          "browsers"
                                          x
                                          "contentWindow"
                                          "location"
                                          "toString"))
                                    (js< gbrowser
                                         "browsers"
                                         x)

                                    (js! (gbrowser
                                          "tabContainer"
                                          "childNodes"
                                          "item")
                                         x)

                                    gbrowser))))))





  reply	other threads:[~2009-08-13 22:54 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-07-08 20:11 Why Emacs should have a good web-browser Fernando
2009-07-08 20:54 ` Chong Yidong
2009-07-08 21:55   ` joakim
2009-07-08 22:42     ` Lennart Borgman
2009-08-13 22:54       ` Daniel Colascione [this message]
2009-07-08 22:55     ` Chong Yidong
2009-07-08 22:59       ` Lennart Borgman
2009-07-08 23:05         ` Davis Herring
2009-07-09  0:05       ` joakim
2009-07-09 12:36       ` Jason Rumney
2009-07-09 14:25         ` joakim
2009-07-09 16:01           ` Chong Yidong
2009-07-09 17:39             ` joakim
2009-07-09 22:19       ` Richard Stallman
2009-07-08 20:58 ` Richard Riley
2009-07-09 21:12 ` Paul R
2009-07-11 20:24 ` Stefan Monnier
2009-07-12 11:01   ` Robert D. Crawford
2009-07-13  7:18   ` Ken Raeburn
2009-07-17 15:59   ` Paul R
2009-07-18  1:29     ` Miles Bader
2009-07-21  9:18       ` Paul R
2009-07-21 15:52         ` Stefan Monnier
2009-07-21 16:31           ` Miles Bader
2009-07-21 17:25             ` Thomas Lord
2009-07-22  9:23             ` Paul R
2009-07-21 16:52           ` David Reitter
2009-07-21 20:34             ` Chong Yidong
2009-07-21 17:13           ` Thomas Lord
2009-07-21 18:21             ` Adam Wołk
2009-07-21 19:01               ` Lennart Borgman
2009-07-21 19:26                 ` Adam Wołk
2009-07-21 19:33                   ` Lennart Borgman
2009-07-21 19:47                     ` Adam Wołk
2009-07-21 20:02                   ` Robert D. Crawford
2009-07-21 20:08                     ` Lennart Borgman
2009-07-21 20:37                       ` Robert D. Crawford
2009-07-21 20:24                     ` Adam Wołk
2009-07-21 21:27                       ` Robert D. Crawford
2009-07-21 21:36                         ` T.V. Raman
2009-07-21 22:14                           ` Robert D. Crawford
2009-07-21 21:48                         ` Adam Wołk
2009-07-21 22:24                           ` Robert D. Crawford
2009-07-22 10:33               ` Tassilo Horn
2009-07-22  9:12           ` Paul R
2009-07-22 14:47             ` Stefan Monnier
     [not found]       ` <fxezoucvx5x8i57cbqUYAxe124vaj_firegpg@mail.gmail.com>
2009-07-21 22:09         ` Stephen Eilert
2009-07-21 23:05           ` Chong Yidong
2009-07-22 17:40             ` Stephen Eilert
2009-07-22 18:07               ` Chong Yidong
2009-08-30 18:22   ` joakim
2009-09-02  9:58     ` martin rudalics
2009-09-02 12:00       ` joakim
2009-09-12 19:03 ` Deniz Dogan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2154954C-8DB3-42DA-8CAA-A297B16E250A@merrillpress.com \
    --to=danc@merrillpress.com \
    --cc=cyd@stupidchicken.com \
    --cc=emacs-devel@gnu.org \
    --cc=ferkiwi+a@gmail.com \
    --cc=joakim@verona.se \
    --cc=lennart.borgman@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.