From 9813e6eab4797261ddf17cb0ccf22b125b0fbe88 Mon Sep 17 00:00:00 2001 From: PHO Date: Tue, 21 Dec 2010 21:25:23 +0900 Subject: [PATCH] Auto commit by The Sugar System. --- IGNORE | 1 + dot-files/_gdbinit | 169 +++++++++++ dot-files/_navi2ch/init | 4 +- dot-files/_vimperator/plugin/bitly_js | 94 ++++++ dot-files/_vimperator/plugin/copy_js | 403 ++++++++++++++++++++++++++ dot-files/_vimperatorrc | 6 +- 6 files changed, 675 insertions(+), 2 deletions(-) create mode 100644 dot-files/_gdbinit create mode 100644 dot-files/_vimperator/plugin/bitly_js create mode 100644 dot-files/_vimperator/plugin/copy_js diff --git a/IGNORE b/IGNORE index e1d6689..d6ab803 100644 --- 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 index 0000000..5bf7218 --- /dev/null +++ b/dot-files/_gdbinit @@ -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 diff --git a/dot-files/_navi2ch/init b/dot-files/_navi2ch/init index d339058..77b3490 100644 --- a/dot-files/_navi2ch/init +++ b/dot-files/_navi2ch/init @@ -121,4 +121,6 @@ (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 index 0000000..c519b75 --- /dev/null +++ b/dot-files/_vimperator/plugin/bitly_js @@ -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 = + + bit.ly + Get short alias by bit.ly + Bit.ly で短縮URLを得る + 1.1.0 + anekos + new BSD License (Please read the source code comments of this plugin) + 修正BSDライセンス (ソースコードのコメントを参照してください) + http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk/bitly.js + 2.0pre + 2.0pre + ] + Copy to clipboard. + ]]> +; +// }}} + + +(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 index 0000000..07e6cea --- /dev/null +++ b/dot-files/_vimperator/plugin/copy_js @@ -0,0 +1,403 @@ +var INFO = + + teramako + MPL 1.1/GPL 2.0/LGPL 2.1 + + + :copy + :copy label + +

copy the argument replaced some certain string.

+
+
+ + :copy! + :copy! expr + +

evaluate the argument(javascript code) and copy the result.

+
+
+ + copy-keyword + copy-keyword + +

replaces following keywords

+
+
%TITLE%
+
to the title of the current page
+
%URL%
+
to the currenet URL
+
%SEL
+
to the string of selection
+
%HTMLSEL
+
to the html string of selection
+
%HOSTNAME%
+
to the hostname of the current location
+
%PATHNAME%
+
to the pathname of the current location
+
%HOST%
+
to the host of the current location
+
%PORT%
+
to the port of the current location
+
%PROTOCOL%
+
to the protocol of the current location
+
%SERCH%
+
to the search(?...) of the curernt location
+
%HASH%
+
to the hash(anchor #..) of the current location
+
+
+
+ + copy-template + copy-template + +

you can set your own template using inline JavaScript

+ %TITLE%' }, + { label: 'selanchor', value: '%SEL%' }, + { label: 'htmlblockquote', value: '
%HTMLSEL%
' } + { label: 'ASIN', value: 'copy ASIN code from Amazon', custom: function(){return content.document.getElementById('ASIN').value;} }, +]; +EOM + ]]>
+
+
label
+
template name which is command argument
+
value
+
copy string. copy-keyword is replaced
+
map
+
key map lhs (optional)
+
custom
+
+ function or Array (optional) +
+
function
+
execute the function and copy return value, if specified
+
Array
+
+ replace to the value by normal way at first. + then replace words matched Array[0] in the repalced string to Array[1]. +
+
Array[0]
+
String or RegExp
+
Array[1]
+
String or Function
+
+ see: http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:String:replace +
+
+
+
+
+
+ + copy-option + copy-option + + liberator.globalVariables.copy_use_wedata = false; // false by default +

true に設定すると wedata からテンプレートを読込みます。

+ liberator.globalVariables.copy_wedata_include_custom = true; // false by default +

custom が設定された wedata を読込みます。 + SandBox でなく、window.eval を利用してオブジェクトする為、 + セキュリティ上の理由で初期設定は false になっています。 + true に設定する場合は、動作を理解したうえ自己責任でご利用ください。

+ liberator.globalVariables.copy_wedata_exclude_labels = ['pathtraqnormalize', ]; +

wedata から読込まない label のリストを定義します。

+
+
+
; +var PLUGIN_INFO = + +{NAME} +enable to copy strings from a template (like CopyURL+) +テンプレートから文字列のコピーを可能にします(CopyURL+みたいなもの) +2.0pre +2.0pre +http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk/copy.js +teramako +MPL 1.1/GPL 2.0/LGPL 2.1 +0.7.5 +; + +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: '%TITLE%' }, + { label: 'selanchor', value: '%SEL%' }, + { label: 'htmlblockquote', value: '
%HTMLSEL%
' } + ]; +} + +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/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: + diff --git a/dot-files/_vimperatorrc b/dot-files/_vimperatorrc index 23c823b..1be0a36 100644 --- a/dot-files/_vimperatorrc +++ b/dot-files/_vimperatorrc @@ -6,7 +6,11 @@ map h map l map :hackage - command! -nargs=1 -description="Open package info in the HackageDB" hackage tabopen http://hackage.haskell.org/package/ +map :mapc:cmapc:imapc:source .vimperatorrc + +map y :copy %URL% +map :copy %TITLE% :: %URL% + " vim: set ft=vimperator: -- 2.40.0