]> gitweb @ CieloNegro.org - sugar.git/commitdiff
Auto commit by The Sugar System.
authorPHO <pho@cielonegro.org>
Tue, 21 Dec 2010 12:25:23 +0000 (21:25 +0900)
committerPHO <pho@cielonegro.org>
Tue, 21 Dec 2010 12:25:23 +0000 (21:25 +0900)
IGNORE
dot-files/_gdbinit [new file with mode: 0644]
dot-files/_navi2ch/init
dot-files/_vimperator/plugin/bitly_js [new file with mode: 0644]
dot-files/_vimperator/plugin/copy_js [new file with mode: 0644]
dot-files/_vimperatorrc

diff --git a/IGNORE b/IGNORE
index e1d66892ddc75b3a4ad914cc81d35cd3656b6515..d6ab803721682c05743618f9a945c1dd75776b19 100644 (file)
--- a/IGNORE
+++ b/IGNORE
@@ -74,6 +74,7 @@
 .lesshst
 .local
 .localized
+.macports
 .macromedia
 .metacity/sessions
 .mozilla
diff --git a/dot-files/_gdbinit b/dot-files/_gdbinit
new file mode 100644 (file)
index 0000000..5bf7218
--- /dev/null
@@ -0,0 +1,169 @@
+# Change $r27 to whatever BaseReg is mapped to
+define pregs
+print *(StgRegTable *)$r27
+end
+
+define ptso
+print *((StgRegTable*)$r27)->rCurrentTSO
+end
+
+define pR1
+print (((StgRegTable)MainRegTable).rR1)
+end
+define pR2
+print (((StgRegTable)MainRegTable).rR2)
+end
+define pR3
+print (((StgRegTable)MainRegTable).rR3)
+end
+define pR4
+print (((StgRegTable)MainRegTable).rR4)
+end
+define pR5
+print (((StgRegTable)MainRegTable).rR5)
+end
+define pR6
+print (((StgRegTable)MainRegTable).rR6)
+end
+define pR7
+print (((StgRegTable)MainRegTable).rR7)
+end
+define pR8
+print (((StgRegTable)MainRegTable).rR8)
+end
+define pFlt1
+print (StgFloat) (((StgRegTable)MainRegTable).rFlt1)
+end
+define pDbl1
+print (StgDouble) (((StgRegTable)MainRegTable).rDbl1)
+end
+
+define pSp
+print (((StgRegTable)MainRegTable).rSp)
+end
+define pSu
+print (((StgRegTable)MainRegTable).rSu)
+end
+define pSpLim
+print (((StgRegTable)MainRegTable).rSpLim)
+end
+
+define pHp
+print (((StgRegTable)MainRegTable).rHp)
+end
+define pHpLim
+print (((StgRegTable)MainRegTable).rHpLim)
+end
+
+# Change $r22 to whatever Sp is mapped to
+define pstk
+pmem $r22 16
+end
+
+define pstk_gc
+pmem MainTSO->sp 16
+end
+
+define pmem
+set $i = $arg1
+set $mem = ((unsigned long)$arg0) & (sizeof(void*)==8 ? ~7 : ~3)
+while $i > 0
+set $i = $i - 1
+x/1a (((long *)$mem) +$i)
+end
+end
+
+define p4
+pmem $arg0 4
+end
+
+define p8
+pmem $arg0 8
+end
+
+define p16
+pmem $arg0 16
+end
+
+define pmem_forwards
+set $mem = $arg0 & (sizeof(void*)==8 ? ~7 : ~3)
+set $i = 0
+while $i < $arg1
+x/1a (((int *)$mem) + $i)
+set $i = $i + 1
+end
+end
+
+define pheap
+pmem $edi-16 16
+end
+
+define dpc
+display /i $pc
+end
+
+define pinfo
+p *((StgInfoTable *)$arg0-1)
+end
+
+define pcinfo
+p *((StgConInfoTable *)$arg0-1)
+end
+
+define prinfo
+p *((StgRetInfoTable *)$arg0-1)
+end
+
+define pfinfo
+p *((StgFunInfoTable *)$arg0-1)
+end
+
+define pbd
+p sizeof(void *)==8 ? (* ((bdescr *)((($arg0 & 0xfffffffffff00000) | (($arg0 & 0xff000) >> 6)) & 0xffffffffffffffc0))) : * ((bdescr *)((($arg0 & 0xfff00000) | (($arg0 & 0xff000) >> 7)) & 0xffffffe0))
+end
+
+define pgen
+p generations[((bdescr *)((($arg0 & 0xfff00000) | (($arg0 & 0xff000) >> 7)) & 0xffffffe0))->gen_no]
+p * ((bdescr *)((($arg0 & 0xfff00000) | (($arg0 & 0xff000) >> 7)) & 0xffffffe0))->step
+end
+
+define getmark
+set $bd = (bdescr *)((($arg0 & 0xfff00000) | (($arg0 & 0xff000) >> 7)) & 0xffffffe0)
+set $offset = (StgPtr)$arg0 - $bd->start
+set $bitmap_word = $bd->u.bitmap + ($offset / 32)
+set $mask = 1 << ($offset & 31)
+p (*$bitmap_word & $mask) != 0
+end
+
+define getmark64
+set $bd = (bdescr *)((($arg0 & 0xfffffffffff00000) | (($arg0 & 0xff000) >> 6)) & 0xffffffffffffffc0)
+set $offset = (StgPtr)$arg0 - $bd->start
+set $bitmap_word = $bd->u.bitmap + ($offset / 64)
+set $mask = 1 << ($offset & 63)
+p (*$bitmap_word & $mask) != 0
+end
+
+# ignore SIGPIPEs
+handle SIGPIPE nostop noprint ignore
+
+define debug1
+p RtsFlags.DebugFlags.interpreter=1
+p RtsFlags.DebugFlags.apply=1
+p RtsFlags.DebugFlags.sanity=1
+end
+
+define debug2
+p RtsFlags.DebugFlags.interpreter=1
+p RtsFlags.DebugFlags.sanity=1
+end
+
+define sanity
+p RtsFlags.DebugFlags.sanity=1
+end
+
+define srch
+print findPtr($1,0)
+end
+define chain
+print findPtr($1,1)
+end
index d3390581ced81566432f2c51dea8b31a6114ef6d..77b349091295876e11ca5a1ce74ca79ac8b037dc 100644 (file)
   (setq navi2ch-article-message-filter-by-mail-alist
        '(("baka" . hide)
       ("younho@hananet.net" . hide)
-      ("cat /etc/passwd | mail nobody@nonexistent.com" . hide))))
+      ("cat /etc/passwd | mail nobody@nonexistent.com" . hide)))
+  (setq navi2ch-article-message-filter-by-id-alist
+        '(("cGBfr+pD" . hide))))
diff --git a/dot-files/_vimperator/plugin/bitly_js b/dot-files/_vimperator/plugin/bitly_js
new file mode 100644 (file)
index 0000000..c519b75
--- /dev/null
@@ -0,0 +1,94 @@
+/* NEW BSD LICENSE {{{
+Copyright (c) 2008, anekos.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+    1. Redistributions of source code must retain the above copyright notice,
+       this list of conditions and the following disclaimer.
+    2. Redistributions in binary form must reproduce the above copyright notice,
+       this list of conditions and the following disclaimer in the documentation
+       and/or other materials provided with the distribution.
+    3. The names of the authors may not be used to endorse or promote products
+       derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+
+
+###################################################################################
+# http://sourceforge.jp/projects/opensource/wiki/licenses%2Fnew_BSD_license       #
+# に参考になる日本語訳がありますが、有効なのは上記英文となります。                #
+###################################################################################
+
+}}} */
+
+// PLUGIN_INFO {{{
+let PLUGIN_INFO =
+<VimperatorPlugin>
+  <name>bit.ly</name>
+  <description>Get short alias by bit.ly</description>
+  <description lang="ja">Bit.ly で短縮URLを得る</description>
+  <version>1.1.0</version>
+  <author mail="anekos@snca.net" homepage="http://d.hatena.ne.jp/nokturnalmortum/">anekos</author>
+  <license>new BSD License (Please read the source code comments of this plugin)</license>
+  <license lang="ja">修正BSDライセンス (ソースコードのコメントを参照してください)</license>
+  <updateURL>http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk/bitly.js</updateURL>
+  <minVersion>2.0pre</minVersion>
+  <maxVersion>2.0pre</maxVersion>
+  <detail><![CDATA[
+    == Commands ==
+      :bitly [<URL>]
+        Copy to clipboard.
+  ]]></detail>
+</VimperatorPlugin>;
+// }}}
+
+
+(function () {
+
+  function bitly (uri, callback) {
+    let req = new XMLHttpRequest();
+    req.onreadystatechange = function () {
+      if (req.readyState != 4)
+        return;
+      if (req.status == 200)
+        return callback && callback(req.responseText, req);
+      else
+        throw new Error(req.statusText);
+    };
+    req.open('GET', 'http://bit.ly/api?url=' + uri, callback);
+    req.send(null);
+    return !callback && req.responseText;
+  }
+
+  commands.addUserCommand(
+    ['bitly'],
+    'Copy bitly url',
+    function (args) {
+      bitly(args.literalArg || buffer.URL, function (short) {
+        util.copyToClipboard(short);
+        liberator.echo('`' + short + "' was copied to clipboard.");
+      });
+    },
+    {
+      literal: 0
+    },
+    true
+  );
+
+  // 外から使えるように
+  liberator.plugins.bitly = {
+    get: bitly
+  };
+
+})();
diff --git a/dot-files/_vimperator/plugin/copy_js b/dot-files/_vimperator/plugin/copy_js
new file mode 100644 (file)
index 0000000..07e6cea
--- /dev/null
@@ -0,0 +1,403 @@
+var INFO =
+<plugin name="copy" version="0.7.6"
+        href="http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk/copy.js"
+        summary="copy strings from the template (like CopyURL+)"
+        xmlns="http://vimperator.org/namespaces/liberator">
+    <author email="teramako@gmail.com">teramako</author>
+    <license>MPL 1.1/GPL 2.0/LGPL 2.1</license>
+    <project name="Vimperator" minVersion="2.3"/>
+    <item>
+    <tags>:copy</tags>
+    <spec>:copy <a>label</a></spec>
+    <description>
+        <p>copy the argument replaced some certain string.</p>
+    </description>
+    </item>
+    <item>
+    <tags>:copy!</tags>
+    <spec>:copy! <a>expr</a></spec>
+    <description>
+        <p>evaluate the argument(javascript code) and copy the result.</p>
+    </description>
+    </item>
+    <item>
+    <tags>copy-keyword</tags>
+    <spec>copy-keyword</spec>
+    <description>
+        <p>replaces following keywords</p>
+        <dl>
+            <dt>%TITLE%</dt>
+            <dd>to the title of the current page</dd>
+            <dt>%URL%</dt>
+            <dd>to the currenet URL</dd>
+            <dt>%SEL</dt>
+            <dd>to the string of selection</dd>
+            <dt>%HTMLSEL</dt>
+            <dd>to the html string of selection</dd>
+            <dt>%HOSTNAME%</dt>
+            <dd>to the hostname of the current location</dd>
+            <dt>%PATHNAME%</dt>
+            <dd>to the pathname of the current location</dd>
+            <dt>%HOST%</dt>
+            <dd>to the host of the current location</dd>
+            <dt>%PORT%</dt>
+            <dd>to the port of the current location</dd>
+            <dt>%PROTOCOL%</dt>
+            <dd>to the protocol of the current location</dd>
+            <dt>%SERCH%</dt>
+            <dd>to the search(?...) of the curernt location</dd>
+            <dt>%HASH%</dt>
+            <dd>to the hash(anchor #..) of the current location</dd>
+        </dl>
+    </description>
+    </item>
+    <item>
+        <tags>copy-template</tags>
+        <spec>copy-template</spec>
+        <description>
+            <p>you can set your own template using inline JavaScript</p>
+            <code><![CDATA[
+javascript <<EOM
+liberator.globalVariables.copy_templates = [
+  { label: 'titleAndURL',    value: '%TITLE%\n%URL%' },
+  { label: 'title',          value: '%TITLE%', map: ',y' },
+  { label: 'anchor',         value: '<a href="%URL%">%TITLE%</a>' },
+  { label: 'selanchor',      value: '<a href="%URL%" title="%TITLE%">%SEL%</a>' },
+  { label: 'htmlblockquote', value: '<blockquote cite="%URL%" title="%TITLE%">%HTMLSEL%</blockquote>' }
+  { label: 'ASIN',   value: 'copy ASIN code from Amazon', custom: function(){return content.document.getElementById('ASIN').value;} },
+];
+EOM
+            ]]></code>
+            <dl>
+                <dt>label</dt>
+                <dd>template name which is command argument</dd>
+                <dt>value</dt>
+                <dd>copy string. <a>copy-keyword</a> is replaced</dd>
+                <dt>map</dt>
+                <dd>key map <a>lhs</a> (optional)</dd>
+                <dt>custom</dt>
+                <dd>
+                    <a>function</a> or <a>Array</a> (optional)
+                    <dl>
+                        <dt><a>function</a></dt>
+                        <dd>execute the function and copy return value, if specified</dd>
+                        <dt><a>Array</a></dt>
+                        <dd>
+                            replace to the <a>value</a> by normal way at first.
+                            then replace words matched <a>Array</a>[0] in the repalced string to <a>Array</a>[1].
+                            <dl>
+                            <dt><a>Array</a>[0]</dt>
+                            <dd>String or RegExp</dd>
+                            <dt><a>Array</a>[1]</dt>
+                            <dd>String or Function</dd>
+                            </dl>
+                            see: <link topic="http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:String:replace">http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:String:replace</link>
+                        </dd>
+                    </dl>
+                </dd>
+            </dl>
+        </description>
+    </item>
+    <item>
+        <tags>copy-option</tags>
+        <spec>copy-option</spec>
+        <description>
+            <code><ex>liberator.globalVariables.copy_use_wedata = false; // false by default</ex></code>
+            <p>true に設定すると wedata からテンプレートを読込みます。</p>
+            <code><ex>liberator.globalVariables.copy_wedata_include_custom = true; // false by default</ex></code>
+            <p>custom が設定された wedata を読込みます。
+            SandBox でなく、window.eval を利用してオブジェクトする為、
+            セキュリティ上の理由で初期設定は false になっています。
+            true に設定する場合は、動作を理解したうえ自己責任でご利用ください。</p>
+            <code><ex>liberator.globalVariables.copy_wedata_exclude_labels = ['pathtraqnormalize', ];</ex></code>
+            <p>wedata から読込まない label のリストを定義します。</p>
+        </description>
+    </item>
+</plugin>;
+var PLUGIN_INFO =
+<VimperatorPlugin>
+<name>{NAME}</name>
+<description>enable to copy strings from a template (like CopyURL+)</description>
+<description lang="ja">テンプレートから文字列のコピーを可能にします(CopyURL+みたいなもの)</description>
+<minVersion>2.0pre</minVersion>
+<maxVersion>2.0pre</maxVersion>
+<updateURL>http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk/copy.js</updateURL>
+<author mail="teramako@gmail.com" homepage="http://vimperator.g.hatena.ne.jp/teramako/">teramako</author>
+<license>MPL 1.1/GPL 2.0/LGPL 2.1</license>
+<version>0.7.5</version>
+</VimperatorPlugin>;
+
+liberator.plugins.exCopy = (function(){
+var excludeLabelsMap = {};
+var copy_templates = [];
+if (!liberator.globalVariables.copy_templates){
+    liberator.globalVariables.copy_templates = [
+        { label: 'titleAndURL',    value: '%TITLE%\n%URL%' },
+        { label: 'title',          value: '%TITLE%' },
+        { label: 'anchor',         value: '<a href="%URL%">%TITLE%</a>' },
+        { label: 'selanchor',      value: '<a href="%URL%" title="%TITLE%">%SEL%</a>' },
+        { label: 'htmlblockquote', value: '<blockquote cite="%URL%" title="%TITLE%">%HTMLSEL%</blockquote>' }
+    ];
+}
+
+copy_templates = liberator.globalVariables.copy_templates.map(function(t){
+    return { label: t.label, value: t.value, custom: t.custom, map: t.map }
+});
+
+copy_templates.forEach(function(template){
+    if (typeof template.map == 'string')
+        addUserMap(template.label, [template.map]);
+    else if (template.map instanceof Array)
+        addUserMap(template.label, template.map);
+});
+
+const REPLACE_TABLE = {
+    get TITLE () buffer.title,
+    get URL () buffer.URL,
+    get SEL () {
+        var sel = '';
+        var win = new XPCNativeWrapper(window.content.window);
+        var selection =  win.getSelection();
+        if (selection.rangeCount < 1)
+            return '';
+
+        for (var i=0, c=selection.rangeCount; i<c; i++){
+            sel += selection.getRangeAt(i).toString();
+        }
+        return sel;
+    },
+    get HTMLSEL () {
+        var htmlsel = '';
+        var win = new XPCNativeWrapper(window.content.window);
+        var selection =  win.getSelection();
+        if (selection.rangeCount < 1)
+            return '';
+
+        var serializer = new XMLSerializer();
+        for (var i=0, c=selection.rangeCount; i<c; i++){
+            htmlsel += serializer.serializeToString(selection.getRangeAt(i).cloneContents());
+        }
+        return htmlsel.replace(/<(\/)?(\w+)([\s\S]*?)>/g, function(all, close, tag, attr){
+            return "<" + close + tag.toLowerCase() + attr + ">";
+        });
+    },
+    get CLIP () {
+        return util.readFromClipboard();
+    }
+};
+'hostname pathname host port protocol search hash'.split(' ').forEach(function (name){
+    REPLACE_TABLE[name.toUpperCase()] = function () content.location && content.location[name];
+});
+
+// used when argument is none
+//const defaultValue = templates[0].label;
+commands.addUserCommand(['copy'],'Copy to clipboard',
+    function(args){
+        liberator.plugins.exCopy.copy(args.literalArg, args.bang, !!args["-append"]);
+    },{
+        completer: function(context, args){
+            if (args.bang){
+                completion.javascript(context);
+                return;
+            }
+            context.title = ['Template','Value'];
+            var templates = copy_templates.map(function(template)
+                [template.label, liberator.modules.util.escapeString(template.value, '"')]
+            );
+            if (!context.filter){ context.completions = templates; return; }
+            var candidates = [];
+            var filter = context.filter.toLowerCase();
+            context.completions = templates.filter(function(template) template[0].toLowerCase().indexOf(filter) == 0);
+        },
+        literal: 0,
+        bang: true,
+        options: [
+            [["-append","-a"], commands.OPTION_NOARG]
+        ]
+    },
+    true
+);
+
+function addUserMap(label, map){
+    mappings.addUserMap([modes.NORMAL,modes.VISUAL], map,
+        label,
+        function(){ liberator.plugins.exCopy.copy(label); },
+        { rhs: label }
+    );
+}
+function getCopyTemplate(label){
+    var ret = null;
+    copy_templates.some(function(template)
+        template.label == label ? (ret = template) && true : false);
+    return ret;
+}
+function replaceVariable(str){
+    if (!str) return '';
+    function replacer(orig, name){ //{{{
+        if (name == '')
+            return '%';
+        if (!REPLACE_TABLE.hasOwnProperty(name))
+            return orig;
+        let value = REPLACE_TABLE[name];
+        if (typeof value == 'function')
+            return value();
+        else
+            return value.toString();
+        return orig;
+    } //}}}
+    return str.replace(/%([A-Z]*)%/g, replacer);
+}
+
+function wedataRegister(item){
+    var libly = liberator.plugins.libly;
+    var logger = libly.$U.getLogger("copy");
+    item = item.data;
+    if (excludeLabelsMap[item.label]) return;
+
+    if (item.custom && item.custom.toLowerCase().indexOf('function') != -1) {
+        if (!liberator.globalVariables.copy_wedata_include_custom ||
+             item.label == 'test') {
+            logger.log('skip: ' + item.label);
+            return;
+        }
+
+        let custom = (function(item){
+
+            return function(value, value2){
+                var STORE_KEY = 'plugins-copy-ok-func';
+                var store = storage.newMap(STORE_KEY, true);
+                var check = store.get(item.label);
+                var ans;
+
+                if (!check){
+                    ans = window.confirm(
+                        'warning!!!: execute "' + item.label + '" ok ?\n' +
+                        '(this function is working with unsafe sandbox.)\n\n' +
+                        '----- execute code -----\n\n' +
+                        'value: ' + item.value + '\n' +
+                        'function: ' +
+                        item.custom
+                    );
+                } else {
+                    if (item.value == check.value &&
+                        item.custom == check.custom &&
+                        item.map == check.map){
+                        ans = true;
+                    } else {
+                        ans = window.confirm(
+                            'warning!!!: "' + item.label + '" was changed when you registered the function.\n' +
+                            '(this function is working with unsafe sandbox.)\n\n' +
+                            '----- execute code -----\n\n' +
+                            'value: ' + item.value + '\n' +
+                            'function: ' +
+                            item.custom
+                        );
+                    }
+                }
+
+                if (!ans) return;
+                store.set(item.label, item);
+                store.save();
+
+                var func;
+                try{
+                    func = window.eval('(' + item.custom + ')');
+                } catch (e){
+                    logger.echoerr(e);
+                    logger.log(item.custom);
+                    return;
+                }
+                return func(value, value2);
+            };
+        })(item);
+
+        exCopyManager.add(item.label, item.value, custom, item.map);
+    } else {
+        exCopyManager.add(item.label, item.value, null, item.map);
+    }
+}
+var exCopyManager = {
+    add: function(label, value, custom, map){
+        var template = {label: label, value: value, custom: custom, map: map};
+        copy_templates.unshift(template);
+        if (map) addUserMap(label, map);
+
+        return template;
+    },
+    get: function(label){
+        return getCopyTemplate(label);
+    },
+    copy: function(arg, special, appendMode){
+        var copyString = '';
+        var isError = false;
+        if (special && arg){
+            try {
+                copyString = liberator.eval(arg);
+                switch (typeof copyString){
+                    case 'object':
+                        copyString = copyString === null ? 'null' : copyString.toSource();
+                        break;
+                    case 'function':
+                        copyString = copyString.toString();
+                        break;
+                    case 'number':
+                    case 'boolean':
+                        copyString = '' + copyString;
+                        break;
+                    case 'undefined':
+                        copyString = 'undefined';
+                        break;
+                }
+            } catch (e){
+                isError = true;
+                copyString = e.toString();
+            }
+        } else {
+            if (!arg) arg = copy_templates[0].label;
+
+            var template = getCopyTemplate(arg) || {value: arg};
+            if (typeof template.custom == 'function'){
+                copyString = template.custom.call(this, template.value, replaceVariable(template.value));
+            } else if (template.custom instanceof Array){
+                copyString = replaceVariable(template.value).replace(template.custom[0], template.custom[1]);
+            } else {
+                copyString = replaceVariable(template.value);
+            }
+        }
+
+        if (appendMode){
+            copyString = util.readFromClipboard() + copyString;
+        }
+
+        if (copyString)
+            util.copyToClipboard(copyString);
+        if (isError){
+            liberator.echoerr('CopiedErrorString: `' + copyString + "'");
+        } else {
+            liberator.echo('CopiedString: `' + util.escapeHTML(copyString || '') + "'");
+        }
+    }
+};
+
+if (liberator.globalVariables.copy_use_wedata){
+    function loadWedata(){
+        if (!liberator.plugins.libly){
+            liberator.echomsg("need a _libly.js when use wedata.");
+            return;
+        }
+
+        var libly = liberator.plugins.libly;
+        copy_templates.forEach(function(item) excludeLabelsMap[item.label] = item.value);
+        if (liberator.globalVariables.copy_wedata_exclude_labels)
+            liberator.globalVariables.copy_wedata_exclude_labels.forEach(function(item) excludeLabelsMap[item] = 1);
+        var wedata = new libly.Wedata("vimp%20copy");
+        wedata.getItems(24 * 60 * 60 * 1000, wedataRegister);
+    }
+    loadWedata();
+}
+
+return exCopyManager;
+})();
+
+// vim: set fdm=marker sw=4 ts=4 et:
+
index 23c823bf117b32dc474c5de7cf39903ca6cc7ef6..1be0a368733ac3e44957e471891c9e4c2041a2a5 100644 (file)
@@ -6,7 +6,11 @@ map h <C-p>
 map l <C-n>
 
 map <C-h> :hackage 
-
 command! -nargs=1 -description="Open package info in the HackageDB" hackage tabopen http://hackage.haskell.org/package/<args>
 
+map <C-r> :mapc<CR>:cmapc<CR>:imapc<CR>:source .vimperatorrc<CR>
+
+map y :copy %URL%<CR>
+map <C-y> :copy %TITLE% :: %URL%<CR>
+
 " vim: set ft=vimperator: