後日加筆訂正事項一覧 この内容は、マガジン発行後に本文に訂正・加筆した内容、また訂正を 要する事項のうち、その後の発行にまだ反映していない重要項目を並べた ものです。(簡単な誤字の訂正程度では反映しません。) なお、発行に反映し次第、ここからは消します。 ************************************ #02 ************************************* 発行時には、boundp は「変数・コマンドなどが存在して いるかどうかを調べる」と書きましたが、これは誤りで、 boundp は、指定された名前の変数・定数が存在しているか どうかだけを調べます。そういう名前のコマンド・関数が あるかどうかは、commandp、fboundp という関数で調べます。 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ☆後日注:最近の Emacs の場合☆ 最近の Emacs では、上記のように書いてもうまくいかない場合があり ます。 まず、環境によっては、M-x describe-key RET BS で「DEL」と表示され、 M-x describe-key RET DEL で「C-d」と表示される場合があります。 この場合は、とりあえずそのまま BS キーを押すとカーソルの手前の文 字が、DEL キーを押すとカーソル位置の文字が消えてくれます。もし、 どうしても設定上の都合で、BS キーを押したときは C-h とみなして ほしい、という場合は、 (if (fboundp 'normal-erase-is-backspace-mode) (normal-erase-is-backspace-mode 0) ) と書いてください。詳細は後日。 ************************************ #05 ************************************* ☆後日注 - 完全解決 上記のような問題点は完全に解決しました。 (defun my-yank () "kill-ring から要素を取りだしてペーストし、 次のペーストではその前のものが出るようにします。" (interactive) (save-excursion (insert (car kill-ring))) (setq kill-ring (cdr kill-ring)) ) としてください。解説は後日。 ************************************ #07 ************************************* というわけで [] でくくりましたが、通常のキーでもこれは可能です。 たとえば、 (global-set-key [a] 'self-insert-command) (global-set-key [C-x C-c] 'save-buffers-kill-emacs) (global-set-key [M-\\] 'call-last-kbd-macro) といった具合です。 #\ だけはやはり \\ と書く必要があります。 【後日訂正】以上は誤りで、正しくは (global-set-key [?a] 'self-insert-command) (global-set-key [?\C-x ?\C-c] 'save-buffers-kill-emacs) (global-set-key [?\M-\\] 'call-last-kbd-macro) とする必要があります。 【さらに後日訂正】ファンクションキーの名前の前に「S-」(Shift)や 「M-」(Meta)、「C-」(Control)をつける記法は、XEmacs では使えません。これについては第 ?? 回で。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - XEMacs では、define-key において特殊キーを Meta や Control で 修飾する場合は (meta x) のようなリストにする FSF Emacs demo, [(shift f1)] なら ok function-key-map no dai2 operand ha 使い分ける必要あり ************************************ #11 ************************************* 【後日補足】じつは、Wnn はあっても jisx0201.el のない環境という       ものが存在します。そういう時の対策は第 xx 回へ。 ************************************ #12 ************************************* update-mode-linesがあるかどうかを調べるため、functionp/commandpを使用 【後日補足】XEmacs では、menu-bar-mode というコマンドは、コンソール       で起動した場合には使えない(X 上で XEmacs を起動した場合       のみ使える)ようです。したがって、上のコードでは XEmacs       をコンソールで起動したときにエラーとなりますので、これを       回避するためには、指定した名前のコマンドが存在するかどうか       を調べるための commandp 関数を使って       (if (and (eq window-system nil) (commandp 'menu-bar-mode))        (menu-bar-mode -1)       )       のようにする必要があります。 ************************************ #13 ************************************* 【後日補足】menu-bar-final-items は XEmacs では使えないようです。       私は XEmacs は使っていないのであまり調べていないのですが、       XEmacs でも使いたい場合はとりあえず、        (if (boundp 'menu-bar-final-items)        (setq menu-bar-final-items        (cons 'delmonta menu-bar-final-items))        )       としておけばいいでしょう。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - XEmacs ではそもそもメニューの定義の方法からして違う!? ************************************ #16 ************************************* vz.el を手元でミラーするようにしたことのアナウンス ☆後日注☆ 今回紹介するのは vz.el ですが、他に physical-line-mode なるものが あるそうです。 http://www.taiyaki.org/elisp/ vz.el で不具合がある場合はこちらのコードを試すといいでしょう。 じつは私も細かい不具合を発見しているのですが、あまり不自由しない のでそのままにしてあります。 ************************************ #17 ************************************* (defun set-selected-frame-size (width height) (interactive (list (string-to-int (read-string (concat "Width(now " (frame-width (selected-frame)) "):" ))) (string-to-int (read-string (concat "Height(now " (frame-height (selected-frame)) "):" ))) )) (set-frame-size (selected-frame) width height) ) 【後日訂正】実は、Emacs のバージョンによっては、これでは正しく       動きません。訂正は第 xx 回で。 ※Emacs のバージョンによっては、concat で文字列と数値を直接結合でき  ないので、int-to-srting か、format の %d を使用するする必要あり Elisp Manual に「使うな」って書いてあるよ… ************************************ #23 ************************************* ☆後日補足 - From: や Subject: に全角文字を使うことについて☆ ご承知のように、通常、メールの From: や Subject: に全角文字を書く 場合には、「=?iso-2022-jp?B?…」のようにエンコードすることになって います。 しかしながら、mh-e では、tiny-mime などのパッケージを入れない限り、 From: や Subject: に全角文字を書くと、上記のように符号化せずに そのまま JIS コードで送ってしまいます。ご注意ください。 ********************************* END OF FILE ********************************