2012年12月24日

siteinit.lに久しぶりに手を入れた

イヴにこんな話題。

こないだ、ちょっとだけxyzzyいじる機会があったんで、前々から入れたいな〜と思っていた幾つかを入れてみた。
少しだけ便利になるかな〜
 
csv-coloring

CSVやTSVのカラムを色付け。2列目は2列目同士で同じ色になるってやつ。http://hie.s64.xrea.com/murmur/diary.cgi?Date=20060709
これ、会社で派遣の人が「Peggy」っていうエディタで似たような機能をつかってて、うわ便利だなって思ったんだけど、アレ有料ソフトなんだよね。それが気に食わなくて代替機能を探してたんだけど、あったよ。作者さんに感謝せねば。

現状は10列目以上を色付けできないらしいけど、そんなにいっぱいのカラムを相手にしないからそれはいいわー。
それより問題は引用符を考慮できないこと。つまり

aaa,"bbb,ccc",ddd

っていうcsvだとbbb,cccを1カラムとして数えてくれない。
これ、ひょっとして正規表現を使っている限り無理なんじゃないかな・・・正規表現って、確か入れ子構造が苦手なんだよね。
問題っていうより新たなチャレンジネタのような気もするので、時間があったら挑戦してみよう。

diff


今までdiffするにはわざわざWinMerge立ち上げてたけど、簡単な奴ならxyzzyでできるようにしたかった。
どうもデフォルトでM-x diffってコマンド打てばなんとかしようとしてくれるようなんだけど、diff.exeがどっかにないとだめらしい
そいつは困ったな!!

ということでdiff.exeを
www.geocities.jp/maru3128/sakura.html
↑のリンク先から拾ってきて保存。
↑はどうやらサクラエディタの外部プログラムをまとめるページらしい。

あっ

この手の高機能エディタって、実は今やデファクトスタンダードはサクラエディタなのかな・・・
xyzzy使ってる人会社にいなかったし・・・・
今後xyzzyの情報ってどんどん少なくなるのかな・・・・・

ま、いいか。人は人だ。俺はxyzzy大好きなんだ。キーバインドはGates.l必須だけど。

まあそんな鬱展開を振りきりつつ、設定を進めよう、siteinit.lとかに

(setq ed::*diff-command-name* 【diff.exeへのショートカット】)

こんなのを書いておけば、対応してくれるようだ。xyzzyは環境まるごとコピーして使うのが普通なんで、外部への絶対パスをあまり設定に書いておきたくない。そこで、xyzzy.exeからの相対パスを書いておくことにする

(setq ed::*diff-command-name* (concat (si:system-root) "etc/diff.exe"))
こんな具合で。

バイナリエディタ

今までバイナリファイルを確認するにはわざわざstrling立ち上げてたけど、簡単な奴なら(ry

これには、hexl-modeというものをインストールすればいいらしい。
githubに一式があった
https://github.com/southly/xyzzy.lisp.hexl

site-lisp配下を探ると、どうもnetinstaller対応のようにみえるんだけど、それっぽいURLがヒットしないなぁ。

まるまる一式xyzzyインストールフォルダ配下にコピーして、siteini.lに

(require "hexl/hexl")

と入れればOK。これはあまり考えなくていいから楽だね。

rubyのマジックコメントを挿入

これ、大変便利なんだけどあまりどこでも紹介してないような気がする。
ruby1.9以降、マルチバイトをソース内に入れるときには、先頭行にこんなのを入れる必要がでてきた。

# -*- coding:UTF-8 -*-

なんだこれ、と思うけど、xmlの<?xml version="1.0" encoding="UTF-8">みたいなもんだと思えばいいのかも。
それならxml-modeのxml-insert-somethingみたいな便利挿入機能があればいいんだな。
というわけで、xml-insert-somethingを参考にして、↓みたいなスクリプトを組んだ。

; magic comment挿入
(defun ruby-insert-magiccomment (&optional encoding)
  "ruby-mode: マジックコメントの挿入"
  (interactive)
  (unless encoding
    (let ((string (char-encoding-display-name (buffer-fileio-encoding)) ))
      (string-match "(\\([^)]+\\))" string)
      (setq encoding (match-string 1))))
  (if (string= encoding "UTF-8N") (setq encoding "UTF-8"))
  (insert (format nil "# -*- coding:~A -*-\n"
          encoding)))
(export '(ruby-mode ruby-insert-magiccomment))
(define-key *ruby-mode-map* '(#\C-x #\C-i) 'ruby-insert-magiccomment)
こいつぁ便利だ!ruby-modeの作者に取り込んでもらうか、githubで公開されていればフォークしてもいいんじゃない、コレ??なあんて、浮かれてたんだけど

ruby2.0ではマジックコメントが不要になるか
http://silentpower2.blogspot.jp/2012/11/ruby-20utf-8.html

え?

あれ、これ、もう不要になるの???

まあ、マジックコメント気持ち悪かったからいいけどさ、短い命だったな!
あまりに俺の動きが遅いというか、近年のオープンソースの時代の速さについていってないのが原因だよね。数少ない名前を上げる機会を逸した・・・

今後の課題

その他今後やりたいこと

xml-mode にhtml5を追加
これ簡単にできる?canvasタグとかを色付けさせたい。

ruby-modeでendやelseって打ち込むと自動的にインデントを閉じる
普通に「d」や「e」って打鍵するたびにインデントを調整しまくるとうざいけど
dと打ち込んだ時に前の文字がenだったらインデント調整

くらいはやりたいなあ。


現状のsiteinit.lもアップロードしておく
siteinit.l
タグ:xyzzy
posted by LoyalTouch at 08:21| Comment(0) | TrackBack(0) | クライアントサイド | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/309578266

この記事へのトラックバック