2009年12月21日月曜日

[VLC][クリスマス]あと数日ですよ

今年もやはりVLC media playerのアイコンがクリスマス仕様になっている様子。
こういう遊び心のあるソフトウェアは個人的に好感がもてます。

そして多分、今回も年明けまでこのアイコンのままだと予想。

去年のスクリーンショット

2009年12月8日火曜日

今日の無題

対応するプラットフォームの多さ[1]が魅力の一つのnewLISPですが、MaemoというOSベースのインターネットタブレット"N810"に移植した人がいるようです。

(apply newLisp Maemo)

guiserver(Javaで書かれたnewLISPのGUI環境)も稼動するようでリンク先の参考画像はなかなか派手目。CUIの起動画面にも凝っていてちょっとカッコイイです。

[1] Linux, MacOSX, FreeBSD, OpenBSD, NetBSD, Solaris/SunOS, Win32(MinGW) などなど

関連リンク

2009年11月30日月曜日

[Emacs]eldocをほんの少し便利にする

LISPファイルの編集時に関数の引数を表示するマイナーモードとして、Emacsではeldoc-mode、CLではslime-autodoc-modeがあるんですが、両者の表示形式が微妙に異なることが気になったのでついカッとなってeldocの方を軽く改造しました。反省はしていない。

gist: 244937 - GitHub

参考画像を見れば分かると思いますが、ポイント位置の引数の強調方法がデフォル トでは太字ではなくハイライトになってます。

Eldocの表示デモ

その他、関数・変数ともにdocstringの表示が可能です。

ソースコードはGistに置いておくのでinstall-elispからインストールすればCL(SLIME)使いは幸せになれるかもしれません。

(install-elisp-from-gist 244937 "eldoc.el")

動作環境

Emacs22以上で動作確認。

無駄にCLのマクロを使っていますがバイトコンパイルすれば (require 'cl) がない状態でも使えるので安心です。


ここまで書いておいてあれですが、このeldoc.elの改造はミニバッファ表示方法がちょこっと変わった位のものなので特に目新しい機能はありません。

単に表示色を変更したいだけなら本来のeldocのfaceを弄ればそれっぽくなります。

(set-face-background 'eldoc-highlight-function-argument "darkseagreen2")
(set-face-bold-p 'eldoc-highlight-function-argument nil)

2009年11月11日水曜日

[Emacs]そんなことよりeval-after-load使おうぜ

もっと使われてもいいのにと思うEmacsの設定周りのメモ。

[関数] (eval-after-load FILE FORM)

この関数は、指定されたライブラリFILEがロードされているときにのみ2番目の引数FORMを評価するというもの。

例えばmigemoをロードする時の自分の設定はこんな感じ。

;; migemoを読み込む。存在しない場合はnilを返す
(load "migemo" 'noerror)

(eval-after-load "migemo"
 (quote
  (progn
    ;; この辺がmigemoをロードした後に評価される
    (defadvice isearch-mode (before migemo-off activate)
      "初期状態は常にnil"
      (setq migemo-isearch-enable-p nil))
    (fset 'toggle-migemo #'migemo-toggle-isearch-enable)
    (define-key isearch-mode-map (kbd "C-t") 'migemo-isearch-toggle-migemo)
    )))

この関数の利点は

  • ライブラリが存在しない場合はeval-after内のフォームが評価されない。
    つまりエラーにならない。
  • emacsの標準関数である (emacs/lisp/subr.el内で定義)。
    つまり自前で関数を用意しなくて良い。
  • 一度eval-after-loadが評価されれば、後からライブラリが読み込まれてもフォーム内部を評価してくれる。
    これは各種メジャーモードのフックに関数を引っ掛けて、フォームの評価を遅らせるのと同様の手段となる。
    例: (add-hook 'emacs-lisp-mode-hook 'turn-on-eldoc-mode)

逆に不便な点、気にくわない点は

  • 評価できるフォームが1つしか指定できない。
    => (progn ...) を使えば複数フォームを指定できる
  • 関数なので引数が必ず評価される。そのためにフォームをquoteするのが嫌。おまけにシングルクオート '(...) を使うとフォーム内のインデントが崩れる。
    => 代わりに (quote FORM) を使えば長いフォームもそれなりにインデントされる。

この辺は一応マクロを使えば解決するが...なんで関数なんでしょうね、これ。

(defmacro eval-after-load-1 (file &rest args)
 `(eval-after-load ,file
    (quote (progn ,@args))))
(put 'eval-after-load-1 'lisp-indent-function 1)

参考URL

2009年9月12日土曜日

Swank server for newLISP

ひっそりと更新。

以前挑戦した「newLISPをSLIMEから動かす」が、一応お遊び程度に完成したので公開してみます。

http://github.com/kosh04/newlisp-files/tree/master >> swank-newlisp.lsp

簡単なREPLが使えるくらいで、SLIMEの特徴であるシンボル名の補完、定義ファイルへのジャンプなどなど実装されていない残念な出来です。

2009年7月15日水曜日

今朝の無題

Lispは未来に生きている - リリカル☆Lisp開発日記 - http://blog.bugyo.tk/lyrical/2009/02/lisp-15.html

そろそろCLのuniversal-timeがキリ番になりますね。

---

そういえば自分のGitHubのリポジトリをちまちま更新しました。 主に個人用に作っているのでフォローしている人がいるとなんだか申し訳ない気分です。

今のところの更新頻度は emacs-lisp > newlisp-files >> xyzzy-lisp こんな感じです(左に行くほど頻度が高い)。 研究室の端末がDebianなのでEmacsを弄りがちで、xyzzyとの挙動の違いを自作のxyzzy.elで埋めるのが主な目的。

---

それにしてもnewLISPは話題に乗りませんねー。 毎回検索の上位にこのブログが入っているのを見ると嬉しいような悲しいような…

変な愛着が湧いて今でも手探りで調べているnewLISP、もうちょっと他の人が言及してくれてもいいのに。と思うならまず自分からですかね。

2009年7月10日金曜日

TeXのバージョンが円周率に近づいているらしい

ということが「LaTeX2e 美文書作成入門」に書かれていて、なんだかトリビアを覚 えた気分です。
( ・∀・)つ〃∩ヘェーヘェーヘェー

LaTeXで物書きをしている人にとっては常識だったりするんでしょうか、コレ。

以下書籍より引用(ただし手元にあるのは改訂第4版ではなく初版)

...そして,TEX第3.1版(1990年)の時点で次のような終結宣言をしました。

  • もうこれ以上TEXは拡張しない。
  • もし新しい不具合があれば修正して第3.14版,第3.141版,第3.1415版,...と番号を進めていき,自分の死と同時に第π版とする。それ以後はどんな不具合があっても誰も手をつけてはならない。
  • TEXに関することはすべて文書化したので,このノウハウを生かして新たにソフトを作ることは自由である。