« 2010年9月 | トップページ | 2010年12月 »

2010年10月の5件の記事

2010年10月28日 (木)

MinGW を使った Vim のビルドに挑戦

Windows で MinGW を使った Vim のビルドに挑戦してみました。

また、 Kaoriya 版 Vim 7.2 のパッチを Mercurial の MQ で管理してみます。

前準備

MinGW は C と C++ のコンパイラのみインストールしました。

ほかに GnuWin32 もインストール済みです。

ソースコードの取得

まず Vim のリポジトリを Mercurial SCM で複製します。

私は TortoiseHg に付いているコマンドを使ってますが。

hg clone https://vim.googlecode.com/hg/ vim
cd vim

Kaoriya 版のパッチの取り込み

vim オリジナルが vim ディレクトリに、Kaoriya 版が vim72-kaoriya-w32j ディレクトリにあるとします。

Kaoriya 版のパッチが Mercurial でどのリビジョンを対象にしているか調べます。

hg log --keyword "7.2.416"

対象のリビジョンに更新します。

hg update e9c9f37be306

MQ にパッチを取り込みます。事前にエクステンションを有効にしておく必要があります。

MQ について、詳しくはこちら。

hg init --mq
hg qimport ..\vim72-kaoriya-w32j\patches\kaoriya-hg.diff
hg commit --mq -m "hg qimport ..\vim72-kaoriya-w32j\patches\kaoriya-hg.diff"

thinca さんの記事で公開されているリビジョンに更新します。

hg update 3331756e4232

thinca さんのパッチを MQ に取り込みます。

hg qimport --force --name kaoriya-hg.diff http://gist.github.com/raw/470028/cb2c6a95120e3527fab148d550c5b02feca1dada/kaoriya.diff

以下のファイルのエンコーディングが正しく反映されなかったので、パッチファイル (.hg\patches\kaoriya-hg.diff) を直接開いて、これらのファイルの個所をオリジナルの Kaoriya パッチに戻しました。

  • runtime/tutor/tutor.ja.euc
  • runtime/tutor/tutor.ja.sjis
  • src/kaoriya.mnf
  • src/po/ja.po
  • src/po/ja.sjis.po

パッチファイルを Vim で開くときに、以下のようにバイナリモードにすると安全です。

:set binary
:e

直したパッチを適用して、パッチの更新をしておき、適用解除します。

hg qpush
hg qrefresh
hg qpop

パッチを MQ にコミットします。

hg commit --mq -m "hg qimport --force --name kaoriya-hg.diff http://gist.github.com/raw/470028/cb2c6a95120e3527fab148d550c5b02feca1dada/kaoriya.diff"

default ブランチの最新のリビジョン (このとき Vim 7.3.035) に更新します。

hg update default

パッチを適用します。

hg qpush

一部、パッチの適用に失敗したので、.rej ファイルを見ながら修正して、

hg qrefresh
hg qpop
hg commit --mq -m "Vim 7.3.035"

パッチの修正

src/po/ja.sjis.po は書式が古いようなので (今はバックスラッシュのエスケープが不要らしい)、src/po/ja.po を元に直します。

src/po/ja.po を開き、以下の行を探します。

"Content-Type: text/plain; charset=euc-jp\n"
これを以下のように変え、src/po/ja.sjis.po のファイルに Shift_JIS エンコーディングで保存します。
"Content-Type: text/plain; charset=cp932\n"

パッチを作って MQ にコミットします。

hg qnew ja.sjis.po
hg commit --mq -m "remove backslash escape from ja.sjis.po"

取り敢えず make

いよいよ make です。

cd src
mingw32-make -f Make_ming.mak OLE=yes

コンパイルエラーが出ちゃいました。

gcc -c -Iproto -DWIN32 -DWINVER=0x0400 -D_WIN32_WINNT=0x0400 -DHAVE_PATHDEF -DFE
AT_BIG -DHAVE_GETTEXT -DHAVE_LOCALE_H -DDYNAMIC_GETTEXT -DFEAT_OLE -DFEAT_CSCOPE
 -DFEAT_NETBEANS_INTG -DFEAT_GUI_W32 -DFEAT_CLIPBOARD -DFEAT_MBYTE -DFEAT_MBYTE_
IME -DDYNAMIC_IME -DDYNAMIC_ICONV -pipe -w -march=i386 -Wall -O3 -fomit-frame-po
inter -freg-struct-return -s gui_w32.c -o gobj/gui_w32.o
In file included from gui_w32.c:47:0:
gui_w48.c:3431:1: error: static declaration of 'convert_filter' follows non-stat
ic declaration
gui_w48.c:3285:14: note: previous declaration of 'convert_filter' was here
mingw32-make: *** [gobj/gui_w32.o] Error 1

static 宣言になっているから関数が見えないというような意味かと思い、山勘で直してみました。

diff --git a/src/gui_w48.c b/src/gui_w48.c
--- a/src/gui_w48.c
+++ b/src/gui_w48.c
@@ -3427,7 +3427,7 @@
  *
  * Keep in sync with convert_filterW() above!
  */
-    static char_u *
+    char_u *
 convert_filter(char_u *s)
 {
     char_u     *res;

やり直してみます。

mingw32-make -f Make_ming.mak clean
mingw32-make -f Make_ming.mak OLE=yes

今度はエラーが出ずに終了したので、これを新しくパッチにして MQ にコミットしました。

日本語のメッセージの反映

今度は日本語のメッセージのファイルを作ります。

cd src\po
set LANGUAGE=ja.sjis
set VIMRUNTIME=..\..\runtime
mingw32-make -f Make_ming.mak
mingw32-make -f Make_ming.mak ja.sjis.mo
set LANGUAGE=ja
copy ja.sjis.mo ja.mo
mingw32-make -f Make_ming.mak install

また関連 DLL を Kaoriya 版からコピーします。

copy ..\vim72-kaoriya-w32j\intl.dll src\libintl.dll
copy ..\vim72-kaoriya-w32j\iconv.dll src\

Kaoriya 版の便利スクリプトの取り込み

Kaoriya 版だけに入っているスクリプトをコピーします。

robocopy ..\vim72-kaoriya-w32j . *.vim /s /xc /xn /xo /xx
robocopy ..\vim72-kaoriya-w32j . *rc 

これらのスクリプトを MQ でパッチ化します。

hg qnew kaoriya-scripts
hg add glob:**.vim
hg add vimrc
hg add gvimrc
hg qrefresh
hg commit --mq

Bitbucket に入れてみた

書き出してみると結構手順が多いのと、自分が楽をするために、 MQ リポジトリを Bitbucket に入れてみました。

この場合、手順としてはこんな感じになります。

hg clone https://vim.googlecode.com/hg/ vim
cd vim
hg init --mq
hg pull --mq -u http://bitbucket.org/watagashi/vimpatches
hg qpush --all

Vim 本体の最新のリビジョンをプルするときは、事前に qpop しておくのを忘れないように。

hg qpop --all
hg pull -u
hg pull --mq -u http://bitbucket.org/watagashi/vimpatches
hg qpush --all

ビルドはこんな感じのバッチで。

2010年10月22日 (金)

ハッシュタグを自動追加する twicli プラグインを作った

twicli のプラグイン を作りました。

ハッシュタグ検索結果のタブを開いてるときにツイートすると、最後にハッシュタグも自動追加してツイートするというものです。

しかも今度は公式のプラグインとして取り込まれました!

但し、標準では有効になってないので使用する場合はプラグイン設定に insert_hashtag.js を追加する必要があります。

このプラグイン、前から構想はあったのですが、プロ野球クライマックスシリーズのテレビ中継と #dragons を見てるうちに、これはすぐ作らねばと思い…

どうせならクライマックスシリーズの試合の最終回が始まるまでに作って自分で使いたいよねと思い、こんなことを言ってみたりもして。

ちょっと思い出したので、最終回までにプラグインを作る実験。 < 無理。

最初は、ツイートがポストされる直前のプラグイン呼び出し時に、その時開いているタブの id を読み取って、ツイートに付加する仕組みで実装。

なんとか9回表に入る前、30分強で作りましたよ。

ソフトウェアの開発見積もりがこんないい加減じゃ駄目だろうと思いつつも、なんとかなるもんですね。

でも、ふと気付きました。

あ、このままだと140文字ギリギリだったとき、ハッシュタグが入りきらない。 http://gist.github.com/636302 #twicliJP

その後、twicli 作者の @NeoCat さんからの助言 も得て、タブの切り替え時にフッタも切り替える今の実装になりました。文字数の問題も解決。

これで、クライマックスシリーズの中継もより一層楽しめると思ったものの、視聴中に実際にツイートするのはなかなか難しいですね…

2010年10月11日 (月)

静岡ガンダムをライブ配信してみた

今日はそこそこ天気が良かったので、出掛けたついでに JR 東静岡駅の駅前でやってる 模型の世界首都 静岡ホビーフェア に行ってみた。

ライトアップ、始まった。

当初の目的はガンダムの写真でも撮ろうということだったのだけれど、ついでに、実験的に LYNX で Ustream のライブ配信してみた。

当然、中継に関しては全くの無知だし、既に盛り上がってからだいぶだった内容。見る人は誰もいなくて普通かなと思って、自己満足だけして誰も見てない中継を終えたのですが。

そしたら、思わぬ反応が…

慌てて中継を再開しましたよ。

いやぁ、一人でもこうして反応を頂けると、なんかそれだけでライブ配信って楽しいかも!

因みに中継機材等はこんな感じ。簡素なもんです。

上の録画には自分の声がちょっとだけ入ってたり。変な声だ…

画質や撮影技術については大目に見てくださいー

2010年10月 7日 (木)

Gist のソースを表示する twicli プラグイン

また思い付きで twicli のプラグインを作ってみました。

Gisthttp://gist.github.com/609613 みたいな URL があると、ソースを twicli の中で表示します。

プラグインは http://github.com/watagashi/twicli/raw/embedsrc/plugins/embedsrc.js https://raw.github.com/watagashi/twicli/embedsrc/plugins/embedsrc.js で公開中です。

ほかのプラグインのソースは大いに参考にさせて頂きました。特に tweet_url_reply.js とか geomap.js とか。

正直、需要は殆どなさそうな気もしますが、よろしければお試し下さい。

例によってプラグインの追加方法は Twicli plugins - twicli - GitHub を参考にして下さい。

表示する大きさとかはまた弄るかも知れません。

作ってみようと思った切っ掛けは、 新しい Twitter.com が Gist のソース表示に対応したのを知って、似たようなことが出来るんじゃないかと思ったからです。

どうも調べてみると、Gist の URL の最後に .pibb を付けて、 http://gist.github.com/609613.pibb のようにすると、 iframe 用の HTML を取得できるようで、それを使ってみました。

GitHubBitbucket でも似たようなことが出来るかと思ったけれど、同じような方法ではちょっと無理そうでした。GitHub は埋め込み表示用のスクリプトすら見当たらず。

2010年10月 5日 (火)

Twitter の共有ブックマークレットに引用機能を付けてみた

Twitter の共有ブックマークレット (Tweet Button) を使うと、見ているウェブページの URL をタイトルなどの付加情報を付けて簡単にツイートできます。

このブックマークレットで、テキストの引用も出来るといいなと思って、ブックマークレットを改造してみました。

以下のリンクをブックマークに登録すると使用できます。

ブックマークの内容はこちらです。これをコピーしても構いません。

ウェブページの任意のテキストを選択した状態でブックマークレットを実行すると、選択したテキストを二重引用符で囲って引用した状態で投稿用のウィンドウが開きます。

テキストを選択してない場合は > を先頭に挿入します。その前にコメントを追加する想定です。

« 2010年9月 | トップページ | 2010年12月 »

Social connection

  • Check

最近のトラックバック

2017年9月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

これも見とるよ

その他

無料ブログはココログ