枕を欹てて聴く

香炉峰の雪は簾を撥げて看る

ReblogCommand 用 Patch

正直前からどうにかならんのかと思ってたことが案外どうかなったので作ってみた。
ReblogCommand Patch
最新版のReblogCommand (Revision 11133) にpatchを当ててください。
また、最新のLDRizeでないと動きません。

*** reblogcommand.user.js	Sun May  4 19:33:27 2008
--- reblogcommandmod.user.js	Sun May  4 19:33:26 2008
***************
*** 3,8 ****
--- 3,12 ----
  // @namespace      http://white.s151.xrea.com/
  // @include        http://*
  // @include        https://*
+ //
+ // patched ver
+ // by Constellation
+ //
  // ==/UserScript==
  
  (function(){
***************
*** 134,139 ****
--- 138,147 ----
  	window.open(url);
  }
  
+ function spClearPins(url){
+   unsafeWindow.pin.remove(url);
+ }
+ 
  // ----------------------------------------------------------------------------
  // Command
  // ----------------------------------------------------------------------------
***************
*** 160,167 ****
    description: 'Reblog',
    command: function(){
  	  var target_cmd = getTargetCommand();
! 	  var clear_pin = (target_cmd == 'pinned-or-current-link') ? ' | clear-pin' : '';
! 	  window.Minibuffer.execute(target_cmd + ' | reblog' + clear_pin);
    }});
  
  window.Minibuffer.addShortcutkey({
--- 168,185 ----
    description: 'Reblog',
    command: function(){
  	  var target_cmd = getTargetCommand();
! 	  if(window.location.href == "http://fastladder.com/reader/" ||
!         window.location.href == "http://reader.livedoor.com/reader/"){
!       var clear_pin = '-c';
!       if(!window.Minibuffer.execute('pinned-or-current-link').filter(isTumblrUserURL).length){
!         target_cmd = 'current-link';
!         clear_pin = '';
!       }
!       window.Minibuffer.execute(target_cmd + ' | reblog ' + clear_pin);
!     }else{
!       var clear_pin = (target_cmd == 'pinned-or-current-link') ? ' | clear-pin' : '';
!       window.Minibuffer.execute(target_cmd + ' | reblog' + clear_pin);
!     }
    }});
  
  window.Minibuffer.addShortcutkey({
***************
*** 186,192 ****
  			// command line is just 'reblog'
  			urls = [window.location.href];
  		  }
! 	  }else if(stdin.every(function(a){return typeof a == 'string'})){
  		  // command line is 'location | reblog'
  		  urls = stdin;
  	  }else if(stdin.every(function(a){return a && a.nodeName == 'A'})){
--- 204,217 ----
  			// command line is just 'reblog'
  			urls = [window.location.href];
  		  }
! 	  }else	if(window.location.href == "http://fastladder.com/reader/" ||
!           window.location.href == "http://reader.livedoor.com/reader/"){
!       var tmp = [];
!       stdin.forEach(function(url, index){
!         tmp[index] = url;
!       });
!       urls = tmp;
!     }else if(stdin.every(function(a){return typeof a == 'string'})){
  		  // command line is 'location | reblog'
  		  urls = stdin;
  	  }else if(stdin.every(function(a){return a && a.nodeName == 'A'})){
***************
*** 197,206 ****
  	  // reblog
  	  if(args.length == 1 && args[0] == '-m'){
  		  urls.forEach(reblogManually);
- 	  }else if(args.length){
- 		  console.log('unknown args...');
  	  }else{
  		  urls = urls.filter(isTumblrUserURL);
  		  if(!urls.length) return stdin;
  		  var lst = urls.map(reblog);
  		  if(lst.length > 1){
--- 222,234 ----
  	  // reblog
  	  if(args.length == 1 && args[0] == '-m'){
  		  urls.forEach(reblogManually);
  	  }else{
  		  urls = urls.filter(isTumblrUserURL);
+       if(window.location.href == "http://fastladder.com/reader/" ||
+         window.location.href == "http://reader.livedoor.com/reader/"){
+         if(args.length == 1 && args[0] == '-c')
+           urls.forEach(spClearPins);
+       }
  		  if(!urls.length) return stdin;
  		  var lst = urls.map(reblog);
  		  if(lst.length > 1){

中の実装は相当汚いです。
これを当てると2つ利点が増えます。

LDRizeをいじらなくても(F)LDR上からpinで一気にReblogができる

unsafeWindowのせいでできていなかったので、少し迂回するとできるようになりました。

clear-pinを少し変更

LDRizeのclear-pinを変更したのではなく、reblogコマンドに引数-cを加えました。
自分も5回くらいやってショックを受けたことがあるのですが、

間違ってtを押してpinをすべて吹っ飛ばしたことありませんか

これ結構精神的に参るので、patchで少し改良し、pinで一気にreblogしたときは、reblogしたurlのpinだけ削除するように、また、pinの中にtumblrのurlがないときにはcurrent-linkをreblogするように(もちろんpinふっとばしなしで)変更しました。
これで少しでも

間違ってt押してpinが吹っ飛んで涙目
(このpatchを作った主な理由です。5/4 23:00 くらいに私がやりました)

な人が減るとうれしいかも。

補足

bugがあるとあれなので何かあったら気軽に言っていただけると(twitterでもcommentでもどうぞ)ありがたいです。