c4se記:さっちゃんですよ☆

.。oO(さっちゃんですよヾ(〃l _ l)ノ゙☆)

.。oO(此のblogは、主に音樂考察Programming に分類されますよ。ヾ(〃l _ l)ノ゙♬♪♡)

音樂は SoundCloud に公開中です。

考察は現在は主に Scrapbox で公表中です。

Programming は GitHub で開發中です。

AzureaVim変更点 #AzureaScript #js

前回: [AzureaWinにコマンド風操作を追加する #AzureaScript #js - c4se記:さっちゃんですよ☆ http://d.hatena.ne.jp/Kureduki_Maari/20110219/1298054093 ]
変更点は大体[ https://gist.github.com/833567 ]のコメント欄に書いていってるけれども。

既存コマンドの変更点

  1. :open (:o)のデフォルト動作が変わっています。オプションを省略した場合、statusが含む0番目のurlか、status自身を開きます。

新規コマンド

  1. :view (:v) - Azurea内のviewを移動するコマンドです。
  2. :retweet (:rt) - Retweetを行うコマンドです。
  3. :reply (:r, :@) - replyやQT, MRTの自動入力を行うコマンドです。
  4. settings (:setting :set :get) - Azureaの設定iniを、閲覧・操作するコマンドです。


:view (:v)は、home, timeline, h (以上home), mention, reply, r, m, @ (以上mention), message, dm, d (以上message), user, u (以上user), favorite, fav, f (以上favorite), following, follow (以上following), followers, follower, followed (以上followers)をオプション1に取ります。殆ど別名ですね。
:view user (:v user, :view u, :v u)は、特定のユーザー名(ne_sachirou 等)をオプション2に取ります。オプション2を省略した場合は、事前に指定していたstatusのユーザー名のviewへ移動します。
:homeは、:view home (:v home, :v timeline, :v h)の短縮です。
:userは、:view userの短縮です。


:rtは、:retweetの短縮です。


:reply (:r, :@)は、template, all, quote, qt (quoteと同じ), mrt, masirosiki (mrtと同じ)をオプション1に取ります。オプション1は省略できます(動作後述)。
此のコマンドに基本は、

:reply template テンプレート in_reply_to付加するか否か

です。:reply templateは、テンプレート記述をオプション2に取ります。テンプレート記述に就いては後述します。
:reply template テンプレートは、in_reply_toを付加するか否かをオプション3に取ります。trueかfalseです。
:replyのオプション1を省略した場合は、:reply template "@#{screen_name} #{}#{status_hashes.length ? ' ' + status_hashes.join(' ') : ''}"の動作を行います。
:quotetweet, :qtは、:reply quote (:r qt)の短縮です。
:mrtは、:reply mrt (:@ masirosiki)の短縮です。


:settings (:setting, :set)は、設定式をオプション1に取ります。

例:
  • iniのMiscセクションのFontSizeを閲覧 - :settings Misc :: FontSize
  • iniのMiscセクションのEnableAutoRefreshを1に設定 - :settings Misc::EnableAutoRefresh=1

設定式は空白を含めます。いいようにしてくれます(オプション2が無いから可能なのですね)。
Azureaの設定があんまわかってないので、サポートは薄いです。真夏のリップクリーム位い薄いかな……。
:getは、:settings (:set)と同じですが、強制的に閲覧動作と見做され、値の設定は行われません。

:replyのテンプレート記述に就いて

先ず前提に、コマンドパーサの都合として、テンプレートは、空白を含まないか、"" (ダブルクオーテーション)で囲むかして下さい。""内では、バックスラッシュエスケープで"を使用できます。' (シングルクオーテーション)は関知しません。
テンプレートは、基本的に単なる文字列です。但し、 #{云々} と云う記述が、特殊な意味を持ちます。
二つの意味が有ります。
#{ と } の間は、JavaScript式として評価します。正しくはJScriptですが、もっと正しくはAzureaScriptですが、取り敢えず評価します。スコープとして、当該コマンドを実行しているAzureaVimインスタンス自身を与えますので、status_text等の様に、AzureaVim#status_textを参照出来ます。
特殊な場合として、 #{} と、三文字続けて書いた時には、カーソル挿入位置を示します。説明。
:replyコマンドは、テンプレートに従ってTextAreaに記入した後、自動でTextAreaにカーソルを合わせます。此の時のカーソル位置を、#{}で指定できます。二つ目以降の#{}は単に無視します。#{}で指定しなかった場合、カーソルを先頭に挿入します。

例:
  • 通常reply - "@#{screen_name} #{}#{status_hashes.length ? ' ' + status_hashes.join(' ') : ''}"
  • 全員にreply - "@#{screen_name + (status_users.length ? ' @' +status_users.join(' @') : '')} #{}"
  • QT - "@#{screen_name} #{} RT: #{status_text}"
  • MRT - "#{} MRT: #{'http://twitter.com/' + screen_name + '/' + status_id}"

其れ以上はコード読んで下さい……。短いですから。

プラグイン

手元で既に仕様変更してるので、解説の気力が死んでます。コメント欄読んでアレして下さい。
今の所、此の[ http://c4se.sakura.ne.jp/widgets/azurea/AzureaVim/src/plugins ]辺りにプラグインを落としてあります。:shindanコマンド、:translateコマンド、:jaコマンドを追加します。
Azurea.iniに[Scripting]を追記し、AllowActiveXObject=1を追記して下さい。しない方がいいと思います。言ってる事おかしいですけど。まあ、次期リリースから、ActiveXObjectは使わない方針で考えてますので。

今後

今後[ https://gist.github.com/833567 ]が更新される事は有りません。別途gitリポジトリを作って、いいようにすると思います。
AzureaUtilを使って、コードを書き直します(もう済んでますが)。
ビルドが必要に成ります(此っちでやる積りですが)。
AzureaのWikiにページ作りたいなあ……(じゃあ仕様を固めて下さい←)。

code

要望、とか、みたいな

  • System.settingsもActiveXObjectも使わずに、複数スクリプト間でデータをやりとりしたりする機構とか。まあrequire迄は望みませんが……。今のところ、外部webサービスを使うアレな方法しか思い付きません。アレ過ぎるなぁ…。System.settings.setValue('user.AzureaUtil', 云々, 云々)でうまい具合ゴニョゴニョする事になるのかな。パーサ大変…。
  • 既にviewに表示されたstatusの、textを書き換えられれば。内部にはそう云う仕組み、持ってるみたいですけど。翻訳で書き換えてるから。