あどけない話

Internet technologies

Emacs

Cocoa Emacs のピコピコ問題

Emacs 23.2 on Mac でローマかな変換をするときに、文字が上下にピコピコしてうっとうしいという方は、このメールを見て下さい。これを足がかりに、みんなで問題を解決しましょう!

Snow Leopard でコンパイルできる Emacs 22.3

Snow Leopard で Emacs 22.3 がコンパイルできなかったので、コンパイルできるようにしたソースを、Gitoriusで公開しました。Macports のパッチとか、inline パッチとか、Goby の View モードでウインドウタイトルが消えるハックとかが入っています。詳しく…

Emacs で Haskell の補完

Emacs の haskell-mode は、補完がないので使いにくいです。という訳で、Haskell の予約語とモジュール名を補完する elisp を書いてみました。haskell-mode と共存します。モジュール名は、ghc-pkg dump を解析して入手します。このパーサーは、Haskell で書…

Goby 1.0 のリリース

手元では更新していましたが、長らくリリースしていませんでした。この際、思い切ってバージョンを 1.0 とし、Goby をリリースしました。

Cocoa Emacsでのフォント設定

Cocoa Emacs をそのまま使うと、等幅フォントの設定が使い物になりません。日本語文字の幅は、英語文字の倍であるべきです!Web を調べても、みんな困っていることが分かっただけ。そこで自分でハックしてみましたが、到底手に負えないことが分かりました。(…

今日の Cocoa Emacs

長い間、自分でコンパイルした Cocoa Emacsが起動しても一瞬で落ちるようになっていました。ずいぶんと悩んだのですが、他の人は動いているみたいなので、自分の環境のせいだと思い、dtrace で追いかけてみました。こんな感じです。 % sudo dtrace -n "sysca…

Emacs補完候補の選択を便利に

今話題のauto-complete.elを使ってみましたが、以下の点が使いづらく、使うのを止めてしまいました。 候補が最大10個しか出ない 10個以上の候補がある場合、次に打つべき文字が分らない バッファの最下部でメニューが表示されると、勝手にスクロールされる …

今日の Cocoa Emacs

ようやく Cocoa Emacs が動くようになりました。コンパイルは、nextstep/INSTALL に従い次のようにします。 % ./configure --with-ns % make -j2 次に、 % make install とすると、nextstep/Emacs.app ができます。この Emacs.app ディレクトリを好きなとこ…

Cocoa Emacs

Emacs CVS に、ついに Cocoa 対応のコードがマージされました。nextstep というディレクトリができていて、そこで "compile" を実行します。しかし、僕は途中でコンパイルが止まってしまいました。他にも同じような症状になる人がいるようです。

Emacs Lisp の構造化

忌み嫌われているグローバル変数/関数をなるべく使用しないために、もう一つ小さな空間を用意している言語があります。僕のイメージでは、この空間はゆりかごです。ゆりかごの実現方法として、以下のようなものが挙げられるでしょう。 C++、Java ならクラス …

Emacs の C で書かれた部分を観察する

Emacs には、C で書かれた部分と、Emacs Lisp で書かれた部分があります。Emacs Lisp の部分の挙動を観察しようと思ったら、Lisp というぐらいでとっても簡単です。たとえば、x という変数の値が知りたいなら、(message "DEBUG: x = %d" x) を追加すればいい…

load-path などの設定

ruby-modeの話で、append ではなく cons を使うべきだと書いたところ、使い方に悩んでいる人がいるようです。たとえば、cons で2 つパスを追加しようとすると、 (setq load-path (cons "foo" (cons "bar" load-path))) となって見にくいです。append なら、 …

alpaca v0.13 のリリース

自称「世界一の alpaca ユーザ」さんから、「alpaca にはバグがある」という話を常々されていたのですが、この程「再現できた」という報告を受け、そのバグを取りました。バグの内容は以下の通り: C-xC-s で保存していない GnuPG ファイルをバッファメニュ…

Emacs Lisp のダメなところ

Emacs Lisp をこよなく愛する僕の目から、Emacs Lisp がダメだと思うところをまとめておきます。 文化的な問題 Emacs Lisper の多くは、Lisp が好きで使っているのではなく、Emacs が好きだからしかたなく使っているのでしょう。本当は C で書きたいのに、無…

my-defstruct

Emacs で (require 'cl) とすると defstruct が使えるようになります。ちょっと調べてみました。 大きなマクロで理解するのは困難 Common Lisp の defstruct なので、getter はあるが、setter がない という訳で、自分で実装してみました。 (defun my-keywor…

Electric な Ruby の end (2)

Electric な Ruby の endですが、ブックマークのコメントにバグが指摘してあったので、直してみました。バグの報告は、ブログのコメントに書き込んで頂けると嬉しいです。(_ _) (defvar ruby-elct-regex "def\\|if\\|class\\|module\\|unless\\|case\\|while…

Electric な Ruby モードの end

Ruby に付いてくる ruby-electric.el では、たとえば class と打った後に空白を入れると end が挿入されます。僕が欲しいエレクトリックな機能は、これじゃありません。end と押すと対応する単語に飛んでほしいのです。というわけで作ってみました。別ファイ…

ruby-mode

Ruby には Emacs の ruby-mode.el が付随しています。README などに設定方法が書いてないので、ほとんどの人は、検索して設定例を探すでしょう。すると、こんな不効率な設定方法が見つかります。 (autoload 'ruby-mode "ruby-mode" "Mode for editing ruby s…

cdr の decrement

Lisp の car や cdr が、以下の略であることぐらい、Lisp をかじったことのある人なら知っているでしょう。 Contents of the Address part of Register number Contents of the Decrement part of Register number Lisp が最初に実装された IBM 704 の機械語…

今日の Emacs

Leopard での話: EMACS_22_BASE はコンパイルでき、動作も安定している。 CVS HEAD はコンパイルできるが、入力をまったく受け付けない。症状が悪化した感じ。

Emacs Lisp で FizzBuzz

Emacs Lisp の習得を目指す誰かの参考になるかもしれないので、僕なりの解答を書いておきます。 アルゴリズムの実装 繰り返しと仕事は分離したいので、まず仕事の部分を定義します。 (defun fizzbuzz (num) (cond ((= (% num 15) 0) "FizzBuzz") ((= (% num …

今日の Emacs 22 on MacOS (Leopard)

Emacs Icon Collections がリリースされたので、ついでに Emacs 22 をバージョンアップしようと思い、EMACS_22_BASE を cvs update して、コンパイルしてみました。すると、最後の最後で EmacsInstaller.dmg の作成に失敗します。よく調べてみると、/usr/bin…

利用されてないローカル変数

僕はすでに XEmacs を使っていませんし、Mew でもサポートを止めています。なのに、XEmacs を Mac に入れ続けています。何故かというと。。。利用されていないローカル変数を見つけるためです。XEmacs では、バイトコンパイルすると、これを表示してくれます…

Emacs と Ajax

巷では、やれ Ajax だとか、RIAだとか騒がれていますが、Ajax の非同期性は基礎がなってない、というお話です。 Emacs Emacs では、コマンドを start-process で起動したり、TCP コネクションを open-network-stream で開くと、それは非同期プロセスに見えま…

今日の Emacs

最近、Mac で CVS Emacs がコンパイルできませんでしたが、ようやく今日できるようになっていました。しかし、キー入力に対する反応が相変わらず遅いままです。multi tty をマージした副作用はまだ解決されていないようですね。リンクされたのも Cocoa では…