Changeset 19809

Show
Ignore:
Timestamp:
09/24/08 17:12:55 (5 years ago)
Author:
hogelog
Message:
  • markを削除したときにデータ保存が行われないバグの修正
Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/javascript/vimperator-plugins/trunk/moreqmarks.js

    r19807 r19809  
    55 * @description-ja QuickMarksに機能追加(位置の記憶、qmarksとは別のスタックとキュー追加) 
    66 * @author         hogelog 
    7  * @version        0.04 
     7 * @version        0.05 
    88 * ==/VimperatorPlugin== 
    99 * 
     
    3434 
    3535    // TODO: move to a storage module 
    36     var defaultMarks = liberator.options.getPref("extensions.vimperator.quickmarks", "").split("\n"); 
    3736    var savedMarks = liberator.options.getPref("extensions.vimperator.moreqmarks", "").split("\n"); 
    3837    var savedMarkStack = liberator.options.getPref("extensions.vimperator.moreqmarkstack", "").split("\n"); 
     
    4140    // load the saved quickmarks -- TODO: change to sqlite 
    4241    if(use_default_data) { 
     42        var defaultMarks = liberator.options.getPref("extensions.vimperator.quickmarks", "").split("\n"); 
    4343        for (var i = 0; i < defaultMarks.length - 1; i += 2) { 
    4444            var url = defaultMarks[i+1]; 
     
    7676                qmark_queue.unshift(item); 
    7777                break; 
     78            case "mark": 
    7879            default: 
    7980                qmarks[qmark] = item; 
     
    8485        switch(target) { 
    8586            case "stack": 
    86                 return qmark_stack.pop(); 
     87                return qmark_stack[qmark_stack.length-1]; 
    8788            case "queue": 
    88                 return qmark_queue.pop(); 
     89                return item = qmark_queue[qmark_queue.length-1]; 
     90            case "mark": 
    8991            default: 
    9092                return qmarks[qmark]; 
     
    103105                list = qmark_queue; 
    104106                break; 
     107            case "mark": 
    105108            default: 
    106109                list = qmarks;  
     
    208211                liberator.options.setPref("extensions.vimperator.moreqmarkqueue", savedQuickMarkQueue); 
    209212                break; 
     213            case "mark": 
    210214            default: 
    211215                var savedQuickMarks = ""; 
     
    217221                } 
    218222                liberator.options.setPref("extensions.vimperator.moreqmarks", savedQuickMarks); 
     223                if(use_default_data) { 
     224                    var savedQuickMarks = ""; 
     225                    for (var mark in qmarks) { 
     226                        savedQuickMarks += mark + "\n"; 
     227                        savedQuickMarks += qmarks[mark].url + "\n"; 
     228                    } 
     229                    liberator.options.setPref("extensions.vimperator.quickmarks", savedQuickMarks); 
     230                } 
    219231                break; 
    220232        } 
     
    249261                return witchWindow.getBrowser().selectedTab; 
    250262 
     263            case "mark": 
    251264            default: 
    252265                liberator.echoerr("Exxx: Invalid 'where' directive in liberator.plugins.moreqmarks openurls(...)"); 
     
    285298        { 
    286299            var where = /\bquickmark\b/.test(liberator.options["activate"]) ? liberator.NEW_TAB : liberator.NEW_BACKGROUND_TAB; 
    287             liberator.quickmarks.jumpTo("", where, true, "stack"); 
     300            if(liberator.quickmarks.jumpTo("", where, true, "stack")) { 
     301                liberator.quickmarks.remove("", "", "stack"); 
     302            } 
    288303        }); 
    289304 
     
    299314        { 
    300315            var where = /\bquickmark\b/.test(liberator.options["activate"]) ? liberator.NEW_TAB : liberator.NEW_BACKGROUND_TAB; 
    301             liberator.quickmarks.jumpTo("", where, true, "queue"); 
     316            if(liberator.quickmarks.jumpTo("", where, true, "queue")) { 
     317                liberator.quickmarks.remove("", "", "queue"); 
     318            } 
    302319        }); 
    303320 
     
    364381        }, 
    365382 
    366         remove: function (filter, url) 
    367         { 
    368             if(url) { 
    369                 for(var mark in qmarks) { 
    370                     if(url == qmarks[mark].url) { 
    371                         delete qmarks[mark]; 
    372                         liberator.commandline.echo("delete qmark "+mark, liberator.commandline.HL_INFOMSG); 
    373                         return; 
     383        remove: function (filter, url, target) 
     384        { 
     385            var item; 
     386            switch(target) { 
     387                case "stack": 
     388                    if(item = qmark_stack.pop()) { 
     389                        liberator.commandline.echo("pop "+item.url, liberator.commandline.HL_INFOMSG); 
     390                        save_qmarks("stack"); 
     391                    } else { 
     392                        liberator.echoerr('No QuickStack set'); 
    374393                    } 
    375                 } 
    376                 liberator.echoerr('No QuickMark set to '+url); 
    377             } else { 
    378                 var pattern = new RegExp("[" + filter.replace(/\s+/g, "") + "]"); 
    379  
    380                 for (var qmark in qmarks) { 
    381                     if (pattern.test(qmark)) { 
    382                         delete qmarks[qmark]; 
    383                         liberator.commandline.echo("delete qmark "+qmark, liberator.commandline.HL_INFOMSG); 
    384                         return; 
     394                    break; 
     395                case "queue": 
     396                    var item; 
     397                    if(item = qmark_queue.pop()) { 
     398                        liberator.commandline.echo("dequeue "+item.url, liberator.commandline.HL_INFOMSG); 
     399                        save_qmarks("queue"); 
     400                    } else { 
     401                        liberator.echoerr('No QuickQueue set'); 
    385402                    } 
    386                 } 
    387                 liberator.echoerr('No QuickMark match '+filter); 
     403                    break; 
     404                case "mark": 
     405                default: 
     406                    if(url) { 
     407                        for(var mark in qmarks) { 
     408                            if(url == qmarks[mark].url) { 
     409                                delete qmarks[mark]; 
     410                                liberator.commandline.echo("delete qmark "+mark, liberator.commandline.HL_INFOMSG); 
     411                                save_qmarks("mark"); 
     412                                return; 
     413                            } 
     414                        } 
     415                        liberator.echoerr('No QuickMark set to '+url); 
     416                    } else { 
     417                        var pattern = new RegExp("[" + filter.replace(/\s+/g, "") + "]"); 
     418 
     419                        for (var qmark in qmarks) { 
     420                            if (pattern.test(qmark)) { 
     421                                delete qmarks[qmark]; 
     422                                liberator.commandline.echo("delete qmark "+qmark, liberator.commandline.HL_INFOMSG); 
     423                                save_qmarks("mark"); 
     424                                return; 
     425                            } 
     426                        } 
     427                        liberator.echoerr('No QuickMark match '+filter); 
     428                    } 
    388429            } 
    389430        }, 
     
    405446                        liberator.echoerr("E20: QuickMarkQueue is empty"); 
    406447                        break; 
     448                    case "mark": 
    407449                    default: 
    408450                        liberator.echoerr("E20: QuickMark not set"); 
    409451                        break; 
    410452                } 
    411             } 
     453                return false; 
     454            } 
     455            return true; 
    412456        }, 
    413457 
     
    424468                        liberator.echoerr("No QuickMarkQueue set"); 
    425469                        break; 
     470                    case "mark": 
    426471                    default: 
    427472                        liberator.echoerr("No QuickMarks set"); 
     
    451496            // save_qmarks("stack"); 
    452497            // save_qmarks("queue"); 
    453             // save_qmarks("list"); 
     498            // save_qmarks("mark"); 
    454499        } 
    455500    };