Управление вкладками firefox в emacs с помощью org-mode

Недавно я нашел способ управлять вкладкой firefox в emacs. Звучит немного безумно. Для этого я использую вкладки в виде дерева (надстройка Firefox), Moz Repl, emacs, org-mode.

Для 10-15 вкладок мой план работает нормально. Но 20+ вкладок, у меня Firefox зависает случайно. Может переполнение стека javascript или что-то еще? Я не знаю, что не так с моим кодом. Я размещаю здесь самый импортный код. Кто-нибудь помог мне найти ошибки?

Ниже приведен базовый код Chrome для Firefox, вы можете запустить его в firefox без emacs и MozPepl.

Я использую api вкладок в виде дерева, чтобы получить вкладки и установить для каждой вкладки определенный уровень. Вывод будет использоваться в emacs с org-mode. api вкладок в виде дерева: http://piro.sakura.ne.jp/xul/_treestyletab.html.en#api

Код можно запускать разными способами. Я рекомендую "надстройку рабочего пространства". Скопируйте мой код, выберите контекст Chrome для его запуска. https://addons.mozilla.org/en-US/firefox/addon/workspace/

// two helper function to get title and url of tab
function getTitle(tab)
{ 
    var brower = gBrowser.getBrowserForTab(tab)
    var url = brower.currentURI.spec
    var title = brower.contentTitle
    return title
}
function getUrl(tab)
{ 
    var brower = gBrowser.getBrowserForTab(tab)
    var url = brower.currentURI.spec
    var title = brower.contentTitle
    return ":PROPERTIES:\n:URL:"+url+"\n:END:\n"
}

var L = gBrowser.tabContainer.childNodes.length //firefox tabs length
var str = "" //global string for output

//parse tabs. If tab has child, parse it. It tab has no child, just output.
for(i = 0; i < L; i++){
    level = "*"
    tab = gBrowser.tabContainer.childNodes[i]
    if ('TreeStyleTabService' in window){
    if(TreeStyleTabService.hasChildTabs(tab))
    {
      str = [str, level, " [+] ",  getTitle(tab), "\n", getUrl(tab)].join("") //output title and url. level used in org-mode
      treeparse(TreeStyleTabService.getChildTabs(tab), "**") //if a tab has child tabs. parse it and level up
    }   
str = [str, level, " ",  getTitle(tab), "\n", getUrl(tab)].join("")
}

function treeparse(tablist,level) //parse a list of tabs. If tab has not a child, output. If it has childs, parse again
{
    for(i=0 ; i < tablist.length;i++) {
    tab = tablist[i]
    if ('TreeStyleTabService' in window){
        if(TreeStyleTabService.hasChildTabs(tab))
        {
        str = [str, level, " [+] ",  getTitle(tab), "\n", getUrl(tab)].join("")
        newlevel = level + "*"
        treeparse(TreeStyleTabService.getChildTabs(tab),newlevel)       
        }
        } }
    str = [str, level, " ",  getTitle(tab), "\n", getUrl(tab)].join("")
    }
}

alert(str) //alert to view result. You can also write the result into a file.

8
задан textpattern 11 May 2011 в 08:23
поделиться