Hatena::Groupcadr

わだばLisperになる このページをアンテナに追加 RSSフィード

2004 | 12 |
2005 | 01 | 02 | 07 | 10 | 11 |
2006 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 11 |

2005-07-31

EmacsにLispマシン的な何かを求める

03:17 | EmacsにLispマシン的な何かを求める - わだばLisperになる を含むブックマーク はてなブックマーク - EmacsにLispマシン的な何かを求める - わだばLisperになる

リスプマシンみたいな感じの環境を実現してみることのその2ですが、今回はエディタというかバッファの使い勝手をそれっぽくしてみることに挑戦してみようと思います。それで、どういう感じにするかということなのですが、TI ExplorerやSymbolicsでは、Systemキーもしくは、Selectキーというのがあり、これで画面内のツールを切り換えるということをするみたいです。System-Eでエディタ、System-Mで、ーラー、などなど。加えて、Ctrlを押すと複数のツールを使用していた場合、同じツールの中でぐるぐるとフォーカスが回る仕組になっているみたいです。なんとなく便利そうなので、これをEMACS上で真似してみることにしました。

まず、Systemキーなのですが、当然ながら、普通のPCにもMacにもはそんなキーはないので、適当にキーを割り振る必要があります。EMACSでは、修飾キーとして、Control、Meta、Super、Hyperの各キーが使用できます。本当は、Superも、HyperもSystemとは別個に使用したいのですが、とりあえずは、SystemキーをSuperキーで代用させてみたいと思います。

もとはどんな感じのキーボードなのかといえば、こんな感じです。

それで、Superキーはどこに割り振るかというと、TABとリターンは、Control+I、Control+Mで入力してるので、それらのキーに割り振ってもあまり普段の使用感に支障はないということで、TABと、リターンをSuperキーとすることにしました。

割り振りは、

(define-key function-key-map [(tab)] 'event-apply-super-modifier)
(define-key function-key-map [(return)] 'event-apply-super-modifier)

という感じです。

で、とりあえず、System+Mでメーラーが呼出せれば良い訳なので適当に書いてみました。

志は低く、メーラーを呼びだして、その画面にフォーカスすれば完成ということにします。

;;; おてがみ読み書き
(defun env-mail()
  (interactive)
  (or (functionp 'wl)
      (progn
	(require 'mime-setup)
	(autoload 'wl "wl" "Wanderlust" t)
	(autoload 'wl-draft "wl-draft" "Write-draft-with-Wanderlust." t)
	(wl)))
  (elscreen-switch-to-buffer "Folder")
;  (switch-to-buffer "Folder")
  'env-mail)

(define-key global-map [?\s-m] 'env-mail)

メーラーには、Wanderlustを使用していて、GNU Screenみたいに画面を切り換える、Elscreenというツールも使用しているので、それらの機能を合せて呼出して完了です。

これで、何をしてるときでも、System-Mでメーラーを呼出せる環境の真似ができた訳ですが、案外これだけでも便利です。

次はエディタで同じことをやってみたり、各種環境を作成してみたいと思います。

2005-07-25

LISPでなんか作りたい

00:59 | LISPでなんか作りたい - わだばLisperになる を含むブックマーク はてなブックマーク - LISPでなんか作りたい - わだばLisperになる

もともとlispでなんか作りたいなと思っておりましたが、とりあえず、なんか作ってみようということで、手短にEMACSの生活環境を向上させる試みから始めることにしました。

まずは、EMACSで普段何をしているかといえば、

1) テキストの編集

2) メールの読み書き

3) 2chの読み書き

4) mp3を聴く(プレイヤーのフロントエンド)

くらいのもんで、あまりこのエディタ本来のプログラム用エディタとしての使い方はしてないです。

まあ、とりあえずは、そんな感じでも、なにか便利にしていこうというわけですが、そのお手本としようとするのはリスプマシン(以下、lispm)の環境です。

lispmとは、80年代に流行したAIブームで活躍した、マシンの底辺からlispで作られたマシンです。

lispmのアーキテクチャーというか、その文化はちょっと眺めた感じでは、恐らく、今のコンピュータ環境より洗練された非常に使いやすい環境のようです。

Windows環境よりも、UNIX環境より使っていて楽しそうな環境なので、そういう環境に少しでも近付けたら楽しかろうという感じです。

で、まず何から始めようか思って思いついたのが、CUIのMP3プレイヤーのEMACSフロントエンドmpg123.elのIRIX 6.5への対応改善です。

一応、そのままでも動くんですけども、ボリュームの制御が自分が使っているIRIX6.5だと上手く行きません。

とりあえず、本格的全部をEMACSの拡張言語である、EMACS-LISPで書くことも可能…というかそれが本道なんでしょうが、初心者なので、IRIX側のボリューム調整をする、irixmixer.plというIRIXのaudiopanelのPerlで作ったラッパー作って、それをmpg123.elから操作することにしてみました。

スクリプトとかパッチの質はうんこさんですが、とりあえず、動いたので良しとして、次の環境改善に移りたいと思います。

作成したラッパーとパッチはこんな感じです。

irixmixer.pl

mpg123.el.irix65.patch (mpg123.el 1.44用)