textarea で動く劣化コピー xml-mode の入力まわりを整理して分離してみた。C-x i とかいうツーストローク以上のキーバインドも可能に。ただ、やっぱり文字入力をキャンセルさせる方法がわからないため、入力された文字をあとから削除する方法になってる。チラつく。

これである程度自由にキーバインドが変えられるようになった。

function xmlText_initialize() {
var xml = new xmlText(document.getElementById("xmltext"));
var kb = new keyBinding(document.getElementById("xmltext"), {
"C-x i" : function () { xml.indentLine() },
"TAB"   : function () { xml.indentLine() },
"C-q"   : function () { xml.indentBuffer() },
"C-."   : function () { xml.wellClose() },
"/"     : function () { xml.slash() },
"="     : function () { xml.equal() },
"RET"   : function () { xml.newLineAndIndent() }
});
}
window.addEventListener("load", xmlText_initialize, true);

劣化コピー xml-mode と一緒に使うとき、キャレット位置が若干混乱するのが微妙。なんで混乱するのかよくわからないのだけれど。

textarea のスクロール位置をセットしなおす方法が分からん。使えないって!

event.preventDefault() を使えばキャンセルできるみたいだ。書き換えよう。

あー、しかもブラウザのキーバインド横取りできる。

スクロール問題解決?

Ctrl+記号を入力すると文字が誤認される。

  1. トップ
  2. script
  3. キーバインドの実装
  1. トップ
  2. javascript
  3. キーバインドの実装
  1. トップ
  2. web
  3. キーバインドの実装

textarea で動く劣化コピー xml-mode

まだまだバグがあるんだけど、ぶっちゃけ微妙に飽きてきたので公開 (してモチベーションあげる作戦)。Firefox でしか確認してない。IE では絶対動かないだろう。Opera でもたぶん動かないだろう。問題なのは setSelectionRange, selectionStart。綺麗にクロスブラウザ化するスクリプトをどっかで見たけどまぁいいや。

keydown/keyup は shift とかを単体で押しても反応しやがるので困った。keypress はイベント発生時点で、まだ textarea.value に文字が入力されないのが困った。かなりキモイ方法で解決したけど、スマートなのは keypress 単体を使って、文字入力をキャンセルする方法かなぁ。できなかったけど。

キャレット位置がおかしいバグがなおせたらそこそこ実用になるかな。

dump() しまくってるので Fx のコンソール表示させてると楽しいですよ。なにがだよ?

TAB 以外の文字でのインデントは一切考えていません。必要性を感じませんから。

  • 属性に / を書こうとすると空要素タグ補完されてうざい。文字列の中にいるか外にいるか調べられればいいんだけどうまくいかない。タグの中の "[^"]*" をスキャンするとかなんとか。
  • たまに補完後のキャレットの位置がおかしい。原因・再現性不明
  • CDATA を見事に無視してインデントする。そんなに難しくないと思うけど、面倒くさいと思う。大して使わないのでどうでもいいちゃどうでもいい。
  • <empty-tag /></close-tag> みたいなときインデント崩れる。原因は空要素タグを最初から無視しているせいなんだけど、これ修正するのはめんどい。
  • 一通り実装終わり。CDATA のインデント無視も動いてるっぽい。俺的に汚いソースを書くとインデントが崩れる素晴らしい仕様に(わらい
    1. トップ
    2. script
    3. xml-mode in textarea
    1. トップ
    2. js
    3. xml-mode in textarea
    1. トップ
    2. web
    3. xml-mode in textarea

    というか二年次にあがれるんだろうか、とか思いつつ。あれ本当に微妙に危険な香り。2-3個落としそうだよなぁ。いくつ落としたらだめなんだっけなぁ。えーっと専門26単位必修で、20単位取得できないと二年次になれない。っていうかやばくね。やばくね。いまさら感が激しいけどやばくね。どうしよ。どうしよう? よく考えると教養科目を今年度とってないな。やばいな素で。まぁ仕方ないよなぁ。はぁ。

    まぁどうにかなるよなぁ。なってほしい。なれよ。とにかく、二年次で情報システム関係にいくか情報デザイン関係にいくか微妙に迷ってたんだけど、情報デザインのほうがよさげなのでとりあえず決定。グループワークが多いらしいのが不安だけど、結局そのうちやることになるから仕方ないか、と、いう、か、殆ど学校で口開かないのは危険なんじゃと思い始めた。挨拶ぐらいしかせんな。

    最近現実に対してリアルに諦めはじめて、リアリティにとんだ夢の世界のほうがリアルにいいんじゃないかと思いはじめた。結局いま見ている風景とか、街で歩きタバコしている宇宙人とか、どこに伝えたいことがあるのかわからない音楽とか、そういうのもとかも、無意識のうちに自分が望んで見ているものなわけで、この世界のこの地域の言語でいうならまさしく幻想というか、限りなく中核に近いところで繰り広げられるパッチワークに対して面白さを抱けないみたいな。でもこんな考えもそのパッチワークに含まれた布切れの一部で、実際にはまったく中核に近づいていない可能性もあったりするのだけれど、これまたどうしてもこの考えが間違っているとは思えない。そういう世界、で片付いてしまうのはつまらないけど、現実的だと思う。無意識が無限大に近いような世界フレームを繋ぎ合わせて、脳に刻み込んでいくだけ。「脳」も「無意識」も象徴的でしかない。象徴というか比喩か。どっちでもいいんだ。結局今この世界の中で、この世界について正確に記述することは絶対に不可能だから。この世界は「脳」で考えている、ということになっているだけ。本当は「他人」すら存在しない。つまんないなぁ。無限再帰ループ。alert() はマジでうざいからはやく対処法ください。

    1. トップ
    2. life
    3. 二年次専攻コース洗濯
    1. トップ
    2. school
    3. 二年次専攻コース洗濯

    昨日行ってきた@品川・新高輪プリンス。前回 (2000) より全然人が多かった。特に内定者がいっぱい……

    そんなにおもいっきり面白い展示があったわけじゃない気がする。SED ぐらいかなぁ。SED は確かに綺麗だった。綺麗だったけど庶民には関係なさそうで略。EOS-5D を持ってみたけど重かった……そして全然関係ないところ (AF フレームがファインダーに映るとか) に感動してた。どれにでもついてるよボケ。Wireless IXY は意味があるのか疑問だったんだけど、実際見てみてやっぱり疑問だった。デジタル一眼が Wireless でコンピュータに直接転送できたら便利かもしれないけど、アマチュアには関係ない話だなぁとかなんとか。

    ってことで面白さとしては携帯プロジェクタがなんかやけにかっこよくてよかった。チラついてたけど。

    ソフトウェア関連で Microsoft と云々が……Canon のカラーマネージメントソフトウェアが Windows Vista に搭載されるとか、ぶっちゃけどうでもいいのでよく見てこなかったけど……

    なんかあとは自動システムが多かったなぁ。顔識別・笑顔識別・オート追尾とか。

    デジタル一眼欲しい。

    印刷データ管理とかいってるけど、印刷しなくてすむようなシステムになるべきとか言ってたらキヤノンはプリンタ作ってんダカラ!とか怒られた (誰に)。わろす。

    詳細 @Impress Watch

    1. トップ
    2. tech
    3. Canon EXPO 2005 in Tokyo
    1. トップ
    2. life
    3. Canon EXPO 2005 in Tokyo

     /tmp/ruby-GD-0.7.4
    $ ruby extconf.rb
    checking for main() in -lz... yes
    checking for main() in -lpng... yes
    checking for gdImagePng() in -lgd... yes   
    checking for main() in -lm... yes
    checking for gdImageColorResolve()... yes
    creating Makefile                        
    /tmp/ruby-GD-0.7.4
    $ make
    gcc -g -O2   -I. -I/usr/lib/ruby/1.8/i386-cygwin -I/usr/lib/ruby/1.8/i386-cygwin -I. -DHAVE_GDIMAGECOLORRESOLVE -I/usr/local/include  -c GD.c
    gcc -shared -s -Wl,--enable-auto-import,--export-all  -L"/usr/local/lib" -L"/usr/lib" -o GD.so GD.o  -lruby -lm -lgd -lpng -lz  -lcrypt
    /tmp/ruby-GD-0.7.4
    $ make install
    /usr/bin/install -c -m 0755 GD.so /usr/lib/ruby/site_ruby/1.8/i386-cygwin
    /tmp/ruby-GD-0.7.4
    $ ruby -ve 'require "GD"'
    ruby 1.8.3 (2005-09-21) [i386-cygwin]
    /usr/lib/ruby/site_ruby/1.8/i386-cygwin/GD.so: No such file or directory - /usr/lib/ruby/site_ruby/1.8/i386-cygwin/GD.so (LoadError)
    from -e:1
    exit 1

    意味分からん。いつかはちゃんと動いていたのになぁ。拡張ライブラリが反抗期で僕は悲しい。

    1. トップ
    2. ruby
    3. ruby-gd
    1. トップ
    2. gd
    3. ruby-gd

    質素かつやりたいほうだいかつファンタジーな感じにしようと試行錯誤してとりあえず画像は作ったんだけど、どうあがいても実装できないので構造をちょっといぢっちゃおうかな!バレないよね!とか思ったりしたり。とか書いたらバレるじゃんかよ。誰だよこれ書いたやつ。

    年賀状も同じ系統にしようかと思ってる。flickr の CC 画像をコラージュしようと思ってたんだけど微妙にそれさえめんどくさくなってきた。ああ、どんどんダメ人間に。どうせダメ人間だよ。悪いかよ。もともとダメ人間だよ。うるさいなぁ。

    ちょっとごめんトイレ行って来る、なんて言って席を立ったはいいけど、戻ってきたら自分の座る場所がなかったとか、がんばって作ったはいいけど使われなかったとか、一緒に選んだもののせいで悲しい眼をする誰かを見るとか、そういう気分。たぶんそれいっぱいある。きもちわるいぜ。ぜ。ぜ。ぜ。

    つまらないから寝るよ。寝ようよ。夢の中は素晴らしいぜ。

    あぁそうそう、言うのを忘れていたけれど、僕は妖精と暮らすから君は君なりに生きてくれよ、って彼がいってたよ。

    1. トップ
    2. css
    3. 新しいサイトスタイルを考えたけどどうしようか以下略
    1. トップ
    2. design
    3. 新しいサイトスタイルを考えたけどどうしようか以下略
    1. トップ
    2. web
    3. 新しいサイトスタイルを考えたけどどうしようか以下略
    1. トップ
    2. dempa
    3. 新しいサイトスタイルを考えたけどどうしようか以下略