by shigemk2

当面は技術的なことしか書かない

アルドノア・ゼロの5話で出てきたエラー画面のコードを元ネタと見比べてみた

こんなツイートが出てきたので、アルドノア・ゼロの5話で出てきたエラー画面のコードを元ネタと見比べてみた

アニメで出てきたメッセージはこれ。

A font change leaves tons o-turds between
horizontal text lines
    Pease
    --Devon

PS: bug test code follows. for best results
mv .emacs .emacs-NOT
Open -a Emacs.app
mv .emacs-NOT .emacs
;; OS font bug demo
: stray dots inside a square brancket
(progn
  (insert "\n[] <- no screen turds\n[#
will fix it      ")
  (sit-for 0)
  (beginning-of-line)
  (forward-char)

元ネタ。 three or four MacOS font bugs

実際のコードはこんな感じ

A font change leaves tons-o-turds between horizontal text lines.

                Peace
                        --Devon

PS: bug test code follows, for best results
        $ mv .emacs .emacs-NOT
        $ Open -a Emacs.app
        $ mv .emacs-NOT .emacs
as I know no way to give switches to a MacOS Carbon app.

;; MacOS font bug demo: stray dots inside a square bracket
(progn
  (insert "\n[ ] <--no screen turds\n[#] <--screen turds look like [: ] but  
will fix it.                ")
  (sit-for 0)
  (beginning-of-line)
  (forward-char)
  (delete-char 1)
  (insert " ")
  (forward-char))

Emacs Lispの解説

  1. sit-for この関数は(処理待ちのユーザーからの入力がなければ)再表示を行い、 seconds秒休止するか、入力がくるまで待つ。 GNU Emacs Lisp¥ê¥Õ¥¡¥ì¥ó¥¹¥Þ¥Ë¥å¥¢¥ë: Waiting
  2. beginning-of-line この関数は, 現在行の先頭にポイントを移動する GNU Emacs Lispリファレンスマニュアル: 29. バッファ内の位置
  3. forward-char この関数は, 前方へ, つまり, バッファの末尾に向けて (countが負であれば, 後方へ, つまり, バッファの先頭へ向けて) count文字分ポイントを移動するGNU Emacs Lispリファレンスマニュアル: 29. バッファ内の位置
  4. delete-char 次の文字を削除する GNU Emacs Manual

実行してみる

(progn
  (insert "\n[ ] <--no screen turds\n[#] <--screen turds look like [: ] but  
will fix it.                ")
  (sit-for 0)
  (beginning-of-line)
  (forward-char)
  (delete-char 1)
  (insert " ")
  (forward-char))
[ ] <--no screen turds
[#] <--screen turds look like [: ] but  
w ll fix it.                

iが消えて、空白が挿入され、最後の行の最初のlの次にポインタが挿入されている。