Converted from C:/xyzzy/reference/reference.xml by xml2xxx.l at 06/03/29 11:12:27
======================================================================
■*
[Type       ]: Function
[Arguments  ]: * &rest NUMBERS
[Package    ]: lisp
[Seealso    ]: /
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
引数を全て剰算した数値を返します。

使用例：  
  (* 1 2 3)
  => 6


■*activate-hook*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: verify-buffers-file-modtime
[Section    ]: 変数と定数
[Description]: 
バッファがactivateされたときに任意の処理を行うために使用されます。
デフォルトではファイルの修正日付を確認しています。


■*after-save-buffer-hook*
[Type       ]: Variable
[Package    ]: editor
[Section    ]: 変数と定数
[Description]: 
多分save-bufferの最後に実行されます。


■*apropos-no-regexp*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: apropos
[File       ]: help.l
[Section    ]: シンボル
[Description]: 
non-nil に設定すると、apropos 実行時に、正規表現のメタ文字はエスケープさ
れます。デフォルトは nil です。


■*auto-fill-hook
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: auto-fill-hook
[File       ]: cmds.l
[Section    ]: 変数と定数
[Description]: 
auto-fill-modeの時に、self-insert-commandから*last-command-char*
を引数として実行されます。普通はdo-auto-fillが設定されています。
多分修正しない方が良いと思います。
※run-hooksではなく、funcallされるので注意すること


■*auto-mode-alist*
[Type       ]: Variable
[Package    ]: editor
[File       ]: defs.l
[Section    ]: モード
[Description]: 
モード判定用の連想リストです。(key . datum)の組で登録します。
(string-matchp key filename)がnon-nilになった場合に、
datumをfuncallします。

datumにdecode-auto-modeのプロパティが存在する場合には、バッファを
第一引数にしてdatumをfuncallします。
cc-mode.lのdecode-c-modeを参照

使用例：
  (pushnew '("\\.asp" . basic-mode) *auto-mode-alist* :test 'equal)


■*auto-update-per-device-directory*
[Type       ]: Variable
[Package    ]: lisp
[Seealso    ]: set-per-device-directory
[Section    ]: ファイルシステム
[Description]: 
ファイラで移動したときにドライブ毎のデフォルトのディレクトリについて制御します。

  t   移動するたびに更新する
  nil set-perdevice-directoryで指定したディレクトリに固定する


■*before-delete-buffer-hook*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: delete-buffer , *delete-buffer-hook*
[Section    ]: 変数と定数
[Description]: 
delete-bufferを継続するかどうかを制御します。登録された関数が一
つでもnilを返すとdelete-bufferを中止します。

参考：
  ;;; 呼び出し方
  (run-hook-with-args-until-success
       '*before-delete-buffer-hook* (selected-buffer))

使用例：
  (add-hook '*before-delete-buffer-hook* 'func)
  =>(func)
  (defun func (x) (yes-or-no-p "delete-buffer ~A ?" (buffer-name x)))
  =>func


■*before-find-file-hook*
[Type       ]: Variable
[Package    ]: editor
[File       ]: files.l
[Section    ]: 変数と定数
[Description]: 
find-fileの最初で実行されます。
※run-hook-with-args-until-successで実行されるので注意すること


■*before-save-buffer-hook*
[Type       ]: Variable
[Package    ]: editor
[Section    ]: 変数と定数
[Description]: 
多分save-bufferの最初に実行されます。
※run-hook-with-args-until-successで実行されるので注意すること


■*brackets-is-wildcard-character*
[Type       ]: Variable
[Package    ]: lisp
[Seealso    ]: wild-pathname-p , pathname-match-p
[Section    ]: 変数と定数
[Description]: 
non-nil ならばファイルパスとして渡した文字列中の [...] をワイルドーカー
ドとして扱います。
[共通設定] - [さまざま] - [[...]はワイルドカード(I)] で値を指定すること
ができます。
xyzzy ソース内で定義されており、デフォルト値は t です。
具体的には、wild-pathname-p, pathname-match-p 関数での判定の際に
*brackets-is-wildcard-character* の値が考慮されます。


■*buffer-bar-context-menu*
[Type       ]: Variable
[Package    ]: editor
[File       ]: buffer.l
[Section    ]: バッファ
[Description]: 
バッファ・バー上で右クリックしたときに出てくるコンテキストメニューです。
define-popup-menu で作成されています。（作成は app-menu.l）


■*buffer-bar-context-menu-buffer*
[Type       ]: Variable
[Package    ]: editor
[File       ]: buffer.l
[Section    ]: バッファ
[Description]: 
バッファ・バー上で選択されているバッファです。ただし、バッファ・バー上の
コンテキストメニューで取得専用くらいしか使用できません。


■*buffer-bar-context-menu-handler*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: *buffer-bar-context-menu*
[File       ]: buffer.l
[Section    ]: バッファ
[Description]: 
デフォルトのバッファ・バー用コンテキストメニューハンドラです。
setq-default によって定義されている標準の動作は、 
*buffer-bar-context-menu-buffer* を定義し、*buffer-bar-context-menu* を
返します。


■*buffer-bar-selected-buffer-to-first*
[Type       ]: Variable
[Package    ]: editor
[Section    ]: バッファ
[Description]: 
non-nil なら、選択されたバッファがバッファバー上で一番先頭になります。
キーでタブを移動した場合は移動されません。デフォルトは nil です。
(setq *buffer-bar-selected-buffer-to-first* t) とやって、バッファバーを
クリックすれば分かると思います。


■*buffer-menu-mode-hook*
[Type       ]: Variable
[Package    ]: editor
[File       ]: buf-menu.l
[Section    ]: メニュー
[Description]: 
buffer-menuの起動時に実行されます。

参考：
  (run-hooks '*buffer-menu-mode-hook*)


■*change-buffer-colors-hook*
[Type       ]: Variable
[Package    ]: editor
[Section    ]: 変数と定数
[Description]: 
途中


■*char-encoding-list*
[Type       ]: Variable
[Package    ]: editor
[File       ]: encoding.l
[Section    ]: テキスト
[Description]: 
文字エンコーディングのリストです。ミニバッファからの入力補完候補のリスト
や file-name-dialog のエンコーディングのリストとして使われたりするみたい
です。
文字エンコーディングはクオートしてはいけないみたいですので、定義しなおす
時は注意してください。


■*command-line-mailto-hook*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: 起動時処理フロー
[File       ]: estartup.l
[Section    ]: 変数と定数
[Description]: 
コマンドラインで指定された -mailto オプションの引数を元に実行されます。 
※run-hooksではなくfuncallされるので注意すること


■*command-output-mode-hook*
[Type       ]: Variable
[Package    ]: editor
[File       ]: process.l
[Section    ]: モード
[Description]: 
execute-subprocessの中でcommand-output-mode起動時に実行されます。


■*create-buffer-hook*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: *default-buffer-mode* , nil
[Section    ]: 変数と定数
[Description]: 
多分create-new-bufferで実行されます。


■*dabbrev-search-this-buffer-only*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: dabbrev-expand
[File       ]: dabbrev.l
[Section    ]: テキスト
[Description]: 
dabbrev-expandの検索対象を設定します。

  t   カレントバッファのみを検索します
  nil 全バッファを検索します


■*dabbrevs-no-undo*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: undo , dabbrev-expand
[File       ]: defs.l
[Section    ]: バッファ
[Description]: 
dabbrev-expand時のundoの方法を設定します。
dabbrev-expandを行なった際に候補が順次挿入されますが...
  non-nil  dabbrev-expandの直前まで一気に取り消す
  nil      途中の挿入過程を順番に取り消す


■*deactivate-hook*
[Type       ]: Variable
[Package    ]: editor
[Section    ]: 変数と定数
[Description]: 
バッファがdeactivateされたときに任意の処理を行うために使用されま
す。デフォルトではクリップボードの同期を行っています。


■*default-buffer-mode*
[Type       ]: Variable
[Package    ]: editor
[File       ]: defs.l
[Section    ]: バッファ
[Description]: 
新しくバッファを作成した場合のモードを指定します。
例えば、lisp-modeを指定しておけば、新しく作成したバッファは全てlisp-mode
になります。

使用例：  
  (setq *default-buffer-mode* 'lisp-mode)
  => lisp-mode
  (switch-to-buffer "*new*")
  => #<buffer: *new*>
  buffer-mode
  => lisp-mode


■*default-load-path*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: *load-path*
[File       ]: misc.l
[Section    ]: 変数と定数
[Description]: 
siteinit.lから*load-path*を修正するために用いられます。
siteinit.lの直後に*default-load-path*の内容が、*load-path*にマー
ジされ、*pre-startup-hook*から有効になります。
追加するパスはリストで設定します。

使用例：
  (setq *default-load-path* '("C:/APPLICATIONS/XYZZY/lib"))


■*delete-buffer-hook*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: delete-buffer , *before-delete-buffer-hook*
[Section    ]: 変数と定数
[Description]: 
delete-bufferで実行されます。


■*diff-mode-hook*
[Type       ]: Variable
[Package    ]: editor
[File       ]: diff.l
[Section    ]: モード
[Description]: 
diff起動時に実行されます。


■*do-completion
[Type       ]: Function
[Arguments  ]: *do-completion STRING TYPE &optional WORDP LIST
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: テキスト
[Description]: 
指定した文字列を条件に従い補完します。

  STRING : 補完したい文字列
  TYPE   : 補完する型
        :symbol-name
        :function-name
        :command-name
        :variable-name
        :non-trivial-symbol-name
        :exist-file-name
        :file-name
        :file-name-list
        :directory-name
        :buffer-name
        :exist-buffer-name
        :list
        :list-ignore-case
  WORD   : nilでなければ単語ごとの補完
  LIST   : TYPE が :list か :list-ignore-case の場合の補完リスト

戻り値は以下のとおりです。

  多値で3つの値が戻ってきますので、multiple-value-bind で受け取るといい
  でしょう。complete.lの中にある do-completion-internal を参考にしてくだ
  さい。以下は場合分けをしています。

        [1] 補完の候補が存在しない場合     :no-completions と nil
        [2] マッチする候補がなかった場合   :no-match と nil
        [3] 与えられた文字列がすでに候補の
            いずれかと一致していて
            補完する必要がない場合
            [3.1] 一致した候補が一つだけ   :solo-match と list と prefix
            [3.2] 複数と一致した場合       :not-unique と list と prefix
        [4] 補完した場合                   補完した結果の文字列と list と prefix

  list は、一致した候補のリスト。
  prefix は、例えばファイル名の補完のときのディレクトリ名とか。


■*drag-and-drop-hook*
[Type       ]: Variable
[Package    ]: editor
[File       ]: mouse.l
[Section    ]: 変数と定数
[Description]: 
D&D時に実行されます。デフォルトでは、D&D先がミニバッファ
ならミニバッファへの入力として扱い、それ以外ならfind-fileする
ようになっています。

※run-hooksではなくfuncallされます。引数は2つで、ドロップされたウィンド
  ウとドロップしたファイルのリストです。


■*enter-minibuffer-hook*
[Type       ]: Variable
[Package    ]: editor
[Section    ]: ミニバッファ
[Description]: 
ミニバッファに入ったときに実行されます。(interactive...)で指定さ
れた引数が渡されます。


■*eol-cr*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: *eol-lf* , *eol-crlf*
[File       ]: encoding.l
[Section    ]: 入出力
[Description]: 
改行コードのCRを表す値です。
プロセスやバッファの入出力の改行コードを設定するのに使用します。


■*eol-crlf*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: *eol-cr* , *eol-lf*
[File       ]: encoding.l
[Section    ]: 入出力
[Description]: 
改行コードのCRLFを表す値です。
プロセスやバッファの入出力の改行コードを設定するのに使用します。


■*eol-lf*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: *eol-cr* , *eol-crlf*
[File       ]: encoding.l
[Section    ]: 入出力
[Description]: 
改行コードのLFを表す値です。
プロセスやバッファの入出力の改行コードを設定するのに使用します。


■*error-regexp-list*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: next-error , first-error
[File       ]: errors.l
[Section    ]: エラー
[Description]: 
first-error/next-errorで使用するエラー発生位置の表記形式を変更することが可能です。
*error-regexp-list*の形式は以下のとおりです。

  ((正規表現1 ファイル名のマッチ位置1 行のマッチ位置1)
   (正規表現2 ファイル名のマッチ位置2 行のマッチ位置2)
    ...
   (正規表現N ファイル名のマッチ位置N 行のマッチ位置N))

[xyzzy:05447]で亀井さんが示しているとおり、pushを使って追加するのが無難です。
(push (list (compile-regexp "^\"\\([^\"\n]+\\)\", line \\([0-9]+\\):") 1 2)
      *error-regexp-list*)


■*etc-path*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: etc-path
[File       ]: misc.l
[Section    ]: 変数と定数
[Description]: 
キーワードファイル等を格納するパスが設定されています。
標準では(merge-pathnames "etc" (si:system-root))が設定されています。

参照例：
  *etc-path*
  => "C:/APPLICATIONS/XYZZY/etc"


■*executing-macro*
[Type       ]: Variable
[Package    ]: editor
[File       ]: cmds.l
[Section    ]: マクロ
[Description]: 
マクロを実行中か否かを返します。
  t    マクロを実行中
  nil  マクロを実行中ではない


■*exit-minibuffer-hook*
[Type       ]: Variable
[Package    ]: editor
[Section    ]: ミニバッファ
[Description]: 
ミニバッファから出たときに実行されます。


■*features*
[Type       ]: Variable
[Package    ]: lisp
[Seealso    ]: featurep
[Section    ]: システム
[Description]: 
実装の特徴を表すキーワードをリストとして格納しています。
#+ と #- の評価に影響します。

使用例：
  (+ 2 #+xyzzy 3 #+foo 4)
  => 5
  (push :foo *features*)
  => (:foo :windows-me :windows-98 :xyzzy :ieee-floating-point)
  (+ 2 #+xyzzy 3 #+foo 4)
  => 9
  (pop *features*)
  => :foo
  (+ 2 #+xyzzy 3 #+foo 4)
  => 5


■*filer-chdir-hook*
[Type       ]: Variable
[Package    ]: editor
[Section    ]: ファイラ
[Description]: 
（ファイラでディレクトリが変更されたりすると実行されます。用途不明）


■*filer-chdir-primary-p*
[Type       ]: Variable
[Package    ]: editor
[Section    ]: ファイラ
[Description]: 
（詳細不明）


■*filer-click-toggle-marks-always*
[Type       ]: Variable
[Package    ]: editor
[Section    ]: ファイラ
[Description]: 
nilなら、ファイラで左クリックしたとき、その位置にカーソルがある場合の
みマークを反転します。
non-nil なら、カーソルの移動とマークの反転の両方を同時に行います。
デフォルトは t です。


■*filer-directories*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: filer
[File       ]: filer.l
[Section    ]: ファイラ
[Description]: 
ファイラのジャンプ用のディレクトリを連想リストで設定します。

使用例：
  (setq *filer-directories*
      '((" [デスクトップ]" . "c:/windows/デスクトップ")
        (" [スプール]" . "c:/spool")))


■*filer-drag-and-drop-helper
[Type       ]: Function
[Arguments  ]: *filer-drag-and-drop-helper EFFECT FILES SRC DEST
[Package    ]: editor
[File       ]: filer.l
[Section    ]: ファイラ
[Description]: 
（詳細不明）


■*filer-dual-window*
[Type       ]: Variable
[Package    ]: editor
[Section    ]: ファイラ
[Description]: 
ミニバッファなどでディレクトリを入力した時に立ち上がるファイラを選択し
ます。 nil なら一画面ファイラ、non-nil なら二画面ファイラが起動します。
デフォルトは nil です。


■*filer-eat-esc*
[Type       ]: Variable
[Package    ]: editor
[Section    ]: ファイラ
[Description]: 
nilなら、モードレスファイラでESCを押しても閉じません。
デフォルトは t です。


■*filer-echo-filename*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: filer
[Section    ]: ファイラ
[Description]: 
（途中）
ファイラのステータスウィンドウへのファイル名の表示を制御します。
ファイル名の表示は暇なときに行なっているようです。
  non-nil  暇なときに表示する
  nil      表示しない


■*filer-format-comma*
[Type       ]: Variable
[Package    ]: editor
[Section    ]: ファイラ
[Description]: 
non-nilなら、ファイルサイズをカンマ区切りで表示します。
[共通設定] - [ファイラ] - [ファイルサイズをカンマ区切りで表示(C)] で値を
指定することができます。


■*filer-guide-text*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: filer
[Section    ]: ファイラ
[Description]: 
ファイラ下部に表示されるガイドテキストを設定します。

使用例：
  (setq *filer-guide-text*
      '("(A)ttribute  (B)yteCompile  (C)opy  (D)elete  (E)xtract  (F)ind"
        "(G)o  (J)ump  m(K)dir  <L>Cd  (M)ove  re(N)ame"))


■*filer-last-command-char*
[Type       ]: Variable
[Package    ]: editor
[Section    ]: ファイラ
[Description]: 
ファイラにてコマンドを実行した時に最後に入力された文字を示します。


■*filer-last-file-mask*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: *filer-primary-file-mask* , *filer-secondary-file-mask*
[Section    ]: ファイラ
[Description]: 
一画面ファイラの初期のファイルマスクをリストで設定します。


■*filer-left-window-p*
[Type       ]: Variable
[Package    ]: editor
[Section    ]: ファイラ
[Description]: 
二画面ファイラを閉じたとき、どちらのウィンドウがアクティブだったかが保存
されます。ファイラ未起動時の値は t です。

  nil     : 右側のウィンドウ
  non-nil : 左側のウィンドウ


■*filer-mark-file-size-unit*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: filer
[Section    ]: ファイラ
[Description]: 
ファイラのマークファイルの合計サイズの単位を指定します。
#\B, #\K, #\M, #\G, #\Tの何れかを指定可能です。ただし、例えば#\K
が設定されたとき、サイズが1K未満ならバイト単位になります。デフォ
ルトではnilに設定されています。

使用例：
  (setq *filer-mark-file-size-unit* #\M)


■*filer-modal*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: filer
[File       ]: filer.l
[Section    ]: ファイラ
[Description]: 
ファイラの動作を指定します。

モーダルの場合には、ファイラはエディタとは同期的に動作します。
ファイラ起動中はエディタでの編集は不能です。
モードレスの場合には、ファイラはエディタとは非同期に動作します。
ファイラ起動中にエディタでの編集が可能です。

  t   モーダルで動作させます
  nil モードレスで動作させます


■*filer-path-masks*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: filer
[File       ]: filer.l
[Section    ]: ファイラ
[Description]: 
ファイラのファイルマスクを設定します。

使用例：
  (pushnew '("Microsoft" "*.doc" "*.xls" "*.ppt" "*.sys" "*.bat" "*.ini")
           *filer-path-masks* :test 'equal)


■*filer-primary-directory*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: *filer-secondary-directory*
[Section    ]: ファイラ
[Description]: 
二画面ファイラのアクティブな方のディレクトリを示します。
右側か左側かは *filer-left-window-p* の値によって決まります。
ファイラ未起動時は左側のディレクトリを指定できます。

使用例：
  ; [xyzzy:07218]
  ; 常にカレントディレクトリからファイラを起動する。
  (defun foo ()
    (interactive)
    (let ((*filer-primary-directory* nil)
          (*filer-secondary-directory* nil))
      (open-filer)))


■*filer-primary-file-mask*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: filer , *filer-secondary-file-mask*
[Section    ]: ファイラ
[Description]: 
ファイラ左側の初期のファイルマスクをリストで設定します。

使用例：
  (setq *filer-primary-file-mask* '("*"))


■*filer-retrieve-icon*
[Type       ]: Variable
[Package    ]: editor
[File       ]: filer.l
[Section    ]: ファイラ
[Description]: 
non-nil のとき、ファイラでファイルタイプに応じたアイコンを表示します。
[共通設定] - [ファイラ] - [アイコンをファイルから取ってくる(I)] で値を指
定することができます。


■*filer-secondary-directory*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: *filer-primary-directory*
[Section    ]: ファイラ
[Description]: 
二画面ファイラのアクティブでない方のディレクトリを示します。
右側か左側かは *filer-left-window-p* の値によって決まります。
ファイラ未起動時は右側のディレクトリを指定できます。


■*filer-secondary-file-mask*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: *filer-primary-file-mask* , filer
[Section    ]: ファイラ
[Description]: 
ファイラ右側の初期のファイルマスクをリストで設定します。

使用例：
  (setq *filer-secondary-file-mask* '("*"))


■*filer-use-recycle-bin*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: filer
[File       ]: filer.l
[Section    ]: ファイラ
[Description]: 
ファイラでファイルの削除にゴミ箱を使用するかを設定します。
  non-nil  ファイラで削除したときはゴミ箱行き
  nil      直接削除


■*find-file-file-not-found-hook*
[Type       ]: Variable
[Package    ]: editor
[File       ]: files.l
[Section    ]: 変数と定数
[Description]: 
find-fileで指定されたファイルが存在しないときに実行されます。
※run-hook-with-args-until-successで実行されるので注意すること


■*find-file-hooks*
[Type       ]: Variable
[Package    ]: editor
[File       ]: files.l
[Section    ]: 変数と定数
[Description]: 
find-fileの最後で実行されます。


■*find-file-read-only-hook*
[Type       ]: Variable
[Package    ]: editor
[File       ]: files.l
[Section    ]: 変数と定数
[Description]: 
find-file-read-onlyの中で呼び出されます。

参考：
  (run-hooks '*find-file-read-only-hook*)


■*gensym-counter*
[Type       ]: Variable
[Package    ]: lisp
[Seealso    ]: gensym
[File       ]: evalmacs.l
[Section    ]: シンボル
[Description]: 
gensym で作られるシンボルの名前につく数字です。
使われるたびにインクリメントされます。


■*global-keymap*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: global-set-key
[Section    ]: キーマップ
[Description]: 
グローバルなキーマップです。モード毎のキーマップに何も割り当てられてい
ない場合に使われます。

global-set-key はこのキーマップにバインディングをセットします。


■*gmark-keep-column*
[Type       ]: Variable
[Package    ]: editor
[File       ]: gmark.l
[Section    ]: ポジション
[Description]: 
non-nil なら、global-mark-goto と back-tag-jump の移動の時に行頭へ移動し
ないようになります。


■*grep-directory-name-hook*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: *grep-hook*
[File       ]: grepd.l
[Section    ]: 変数と定数
[Description]: 
grep-dialogでgrep対象のディレクトリを個々に設定したい場合に実行
されます。
※funcallされるので注意すること


■*grep-hook*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: *grepd-hook*
[File       ]: grep.l
[Section    ]: 変数と定数
[Description]: 
grep起動時に実行されます。


■*grepd-hook*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: *grep-hook*
[File       ]: grepd.l
[Section    ]: 変数と定数
[Description]: 
grep-dialog起動時に実行されます。


■*gresreg-directory-name-hook*
[Type       ]: Variable
[Package    ]: editor
[File       ]: gresregd.l
[Section    ]: 変数と定数
[Description]: 
gresreg-dialogでgresreg対象のディレクトリを個々に設定したい場合
に実行されます。
※funcallで実行されるので注意すること


■*history-file-name*
[Type       ]: Variable
[Package    ]: editor
[File       ]: history.l
[Section    ]: 変数と定数
[Description]: 
ヒストリを保存するファイル名です。
nil の場合は関数 history-file-name において
適当に決定されます。


■*ime-mode-hook*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: toggle-ime
[Section    ]: モード
[Description]: 
IMEの切替え時に呼び出されます。


■*init-app-menus-hook*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: 起動時処理フロー
[File       ]: app-menu.l
[Section    ]: メニュー
[Description]: 
xyzzy実行後に実行されます。*app-menu*を直接変更する用途で用いら
れます。

使用例：
  (add-hook '*init-app-menus-hook*
            #'(lambda ()
                (add-menu-item *app-menu* 'close-box :close-box
                               #'kill-selected-buffer)))


■*isearch-scanner-hook*
[Type       ]: Variable
[Package    ]: editor
[File       ]: isearch.l
[Section    ]: 検索・正規表現
[Description]: 
isearch-scannerで実行されます。scan-bufferするパターンを書き換えることが
出来そうです。migemo用？

参考：
  (funcall *isearch-scanner-hook* pattern)


■*kbd-translate-table*
[Type       ]: Variable
[Package    ]: editor
[File       ]: keyboard.l
[Section    ]: キーマップ
[Description]: 
多分、入力された物理的なキーを論理的なキーに変換するためのものです。
この論理的なキーは、F13〜F24などのように存在しないキーに振り向けることが
出来ます。例えば、キートップのラベルに別の文字のラベルを貼り付けるような
ものだと思います。

  ・物理的なキーから論理的なキーへの変換
  ・ローカルキーマップに論理的なキーの設定があればコマンド実行
  ・グローバルキーマップに論理的なキーの設定があればコマンド実行

使用例：
  ;;; C-[ と ESC を別物にする
  (setf (svref *kbd-translate-table* (char-code #\C-[)) #\F15)
  (global-set-key #\F15 'xxxx)

  ;;; BSとCtrl-hを別物にする
  (setf (svref *kbd-translate-table* (char-code #\C-h)) #\F13)
  (global-set-key #\F13 'replace-dialog)


■*keyboard*
[Type       ]: Variable
[Package    ]: editor
[Section    ]: 入出力
[Description]: 
キーボードからの入力を表すストリームです。


■*keyword-load-path*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: *etc-path*
[File       ]: kwd.l
[Section    ]: 変数と定数
[Description]: 
キーワードファイルのパスをリストで設定します。
指定されたキーワードファイルがこのリストから見つからない場合には、
etc-pathで取得されるパスを検索します。

使用例：
  (setq *keyword-load-path* '("C:/Program Files/xyzzy/keyword"))


■*kill-buffer-kills-scratch*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: kill-buffer
[File       ]: lispmode.l
[Section    ]: 変数と定数
[Description]: 
*kill-buffer-kills-scratch*がnon-nilの場合には、kill-bufferで
*scratch*が削除可能です。デフォルトはnilになっています。


■*kill-ring*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: *kill-ring-max* , kill-region , yank
[File       ]: region.l
[Section    ]: リージョン
[Description]: 
killした文字列を格納します。
*kill-ring*は長さが*kill-ring-max*であるリングバッファです。


■*kill-ring-max*
[Type       ]: Variable
[Package    ]: editor
[File       ]: region.l
[Section    ]: リージョン
[Description]: 
killで保存する個数です。*kill-ring*の長さです。


■*kill-xyzzy-hook*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: *query-kill-xyzzy-hook*
[Section    ]: 変数と定数
[Description]: 
xyzzyの終了時に実行されます。


■*last-command*
[Type       ]: Variable
[Package    ]: editor
[Section    ]: 変数と定数
[Description]: 
最後に実行したコマンドが入っています。直前の*this-command*の値が設定されます。


■*lisp-popup-completion-list*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: lisp-complete-symbol
[File       ]: lispmode.l
[Section    ]: 変数と定数
[Description]: 
lisp-complete-symbol 時の補完候補をポップアップ表示するかを設定します。 

動作:
  *lisp-popup-completion-list*
    :always   ポップアップ表示
    :never    *Completion*バッファで表示

    *popup-completion-list-default*
      :always ポップアップ表示
      :never  *Completion*バッファで表示

    non-nil   ポップアップ表示
    nil       *Completion*バッファで表示


■*load-history-hook*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: 起動時処理フロー
[File       ]: history.l
[Section    ]: 変数と定数
[Description]: 
.xyzzy処理後に実行されます。コマンドバー、セッション等のヒストリ変
数の読み込みに使用されています。


■*load-path*
[Type       ]: Variable
[Package    ]: lisp
[Seealso    ]: si:*load-library , load-library , *default-load-path*
[Section    ]: 変数と定数
[Description]: 
ライブラリをロードするパスがリストで設定されています。
直接リストを修正するよりも、siteinit.lで*default-load-path*に追
加する方が好ましいようです。


■*load-pathname*
[Type       ]: Variable
[Package    ]: lisp
[Section    ]: ファイルシステム
[Description]: 
現在読み込み中のファイル名（もしくはストリーム名）が入ります。

load-file内でバインドされます。


■*make-backup-filename-hook*
[Type       ]: Variable
[Package    ]: editor
[File       ]: backup.l
[Section    ]: 変数と定数
[Description]: 
（多分触らないほうがいいと思われます）


■*menu-display-length*
[Type       ]: Variable
[Package    ]: editor
[File       ]: app-menu.l
[Section    ]: 変数と定数
[Description]: 
メニューの「最近使ったファイル」で表示されるファイルパスの長さを指定します。
デフォルトでは40です。


■*minibuffer-buffer-name-history*
[Type       ]: Variable
[Package    ]: editor
[File       ]: minibuf.l
[Section    ]: 変数と定数
[Description]: 
ミニバッファのバッファ名の履歴です。


■*minibuffer-directory-name-history*
[Type       ]: Variable
[Package    ]: editor
[File       ]: minibuf.l
[Section    ]: 変数と定数
[Description]: 
ミニバッファのディレクトリ名の履歴です。


■*minibuffer-execute-history*
[Type       ]: Variable
[Package    ]: editor
[File       ]: minibuf.l
[Section    ]: 変数と定数
[Description]: 
（詳細不明）


■*minibuffer-file-name-history*
[Type       ]: Variable
[Package    ]: editor
[File       ]: minibuf.l
[Section    ]: 変数と定数
[Description]: 
ミニバッファのファイル名の履歴です。


■*minibuffer-lisp-sexp-history*
[Type       ]: Variable
[Package    ]: editor
[File       ]: minibuf.l
[Section    ]: 変数と定数
[Description]: 
ミニバッファのS式の履歴です。


■*minibuffer-popup-completion-list*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: *popup-completion-list-default*
[File       ]: minibuf.l
[Section    ]: ミニバッファ
[Description]: 
ミニバッファで補完リストをポップアップ表示するかを設定します。

使用例：
  (setq *popup-completion-list-default* :always)
  (setq *minibuffer-popup-completion-list* :never)

動作：
  *minibuffer-popup-completion-list*
    :always   ポップアップ表示
    :never    *Completion*バッファで表示
  
    *popup-completion-list-default*
      :always ポップアップ表示
      :never  *Completion*バッファで表示
  
    non-nil   ポップアップ表示
    nil       *Completion*バッファで表示


■*minibuffer-save-ime-status*
[Type       ]: Variable
[Package    ]: editor
[Section    ]: ミニバッファ
[Description]: 
ミニバッファのIMEの状態を制御します。
  nil  ミニバッファのIMEの状態を保存しません。
  t    ミニバッファのIMEの状態を保存します。


■*minibuffer-search-string-history*
[Type       ]: Variable
[Package    ]: editor
[File       ]: minibuf.l
[Section    ]: 変数と定数
[Description]: 
ミニバッファの検索文字の履歴です。


■*minibuffer-symbol-name-history*
[Type       ]: Variable
[Package    ]: editor
[File       ]: minibuf.l
[Section    ]: 変数と定数
[Description]: 
ミニバッファのシンボル名の履歴です。


■*minor-mode-alist*
[Type       ]: Variable
[Package    ]: editor
[Section    ]: モード
[Description]: 
マイナモードがオンのときにモードラインに表示する文字列の連想リストです。
各要素の car はシンボル、 cdr は文字列かシンボルです。

car に指定したシンボルの値が non-nil であって、 cdr が文字列かまたは値が
文字列であるようなシンボルならば、その文字列がモードラインに表示されます。

使用例：
  (pushnew '(edict-mode . "Edict") *minor-mode-alist* :key #'car)

  (pushnew '(async-grep-mode . async-grep-status)
           *minor-mode-alist* :key #'car)


■*modal-filer-save-position*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: *modal-filer-save-size*
[Section    ]: ファイラ
[Description]: 
モーダルでファイラを動作させているときの、ファイラ終了時の動作を設定します。

  t   位置を保存します
  nil 位置を保存しません


■*modal-filer-save-size*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: filer
[Section    ]: ファイラ
[Description]: 
モーダルでファイラを動作させているときの、ファイラ終了時の動作を設定します。

  t   大きさを保存します
  nil 大きさを保存しません


■*modules*
[Type       ]: Variable
[Package    ]: lisp
[Seealso    ]: provide , require
[File       ]: evalmacs.l
[Section    ]: システム
[Description]: 
ロードされたモジュールの一覧が格納されています。
(require "foo")で実際にモジュールを読み込むか否かは*modules*に登録されて
いるかどうかで決まります。モジュールの中で(provide "foo")すると、そのモ
ジュールが*modules*に追加されます。

使用例：
  ;;; モジュールの一覧を見てみる。
  *modules*
  => ( ... )
  (provide "foo")
  => ("foo" ... )
  *modules*
  => ("foo" ... )


■*move-forward-after-undo-deletion*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: undo
[Section    ]: バッファ
[Description]: 
削除をundoした場合のカーソルの位置を制御します。
  non-nil  削除範囲の最後尾
  nil      削除範囲の先頭


■*next-buffer-in-tab-order*
[Type       ]: Variable
[Package    ]: editor
[File       ]: buffer.l
[Section    ]: バッファ
[Description]: 
next-bufferで次に移動するバッファを、タブでの順番どおりにするか否かを設
定します。もちろんprevious-bufferにも影響します。
  t    バッファバーでの次のバッファに移動する。
  nil  どうなるでしょうか？


■*next-screen-context-lines*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: next-page , previous-page , *page-scroll-half-window*
[File       ]: page.l
[Section    ]: ウィンドウ
[Description]: 
previous-page と next-page で重なって表示される行数を指定します。
*page-scroll-half-window* が non-nilのときは効果はありません。


■*package*
[Type       ]: Variable
[Package    ]: lisp
[Seealso    ]: パッケージ , defpackage , in-package
[Section    ]: パッケージ
[Description]: 
実行中のパッケージを保持しています。
in-packageで別のパッケージに移ることができます。

使用例：
  *package*
  => #<package: user>


■*page-scroll-half-window*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: next-page , previous-page
[File       ]: page.l
[Section    ]: ウィンドウ
[Description]: 
next-page/previous-pageのスクロールの単位を半画面ずつにするか制御します。

  t     半画面ずつスクロール
  nil   一画面ずつスクロール


■*page-scroll-keep-window-position*
[Type       ]: Variable
[Package    ]: editor
[File       ]: page.l
[Section    ]: ポジション
[Description]: 
next-page実行時にバッファの最後がウィンドウ内にある場合、バッフ
ァの最後に移動します。previous-pageも同様です。

  t   移動しません
  nil 移動します


■*popup-completion-list-default*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: *minibuffer-popup-completion-list* , *lisp-popup-completion-list*
[File       ]: complete.l
[Section    ]: その他
[Description]: 
補完リスト表示のデフォルトの動作を制御します。
  :always   必ずポップアップ表示します。
  :never    *Completion*バッファで表示します。
  上記以外  個々の設定(*minibuffer-popup-completion-list*等)が
            適用されます。


■*post-command-hook*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: *pre-command-hook*
[Section    ]: 変数と定数
[Description]: 
コマンドループにおいてコマンドの実行後に実行されます。


■*post-startup-hook*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: 起動時処理フロー
[File       ]: estartup.l
[Section    ]: 変数と定数
[Description]: 
初期設定ファイル.xyzzy実行後に以下の順番でフック変数が評価されま
す。
  1. *load-history-hook*
  2. *init-app-menu-hook*
  3. *command-line-mailto-hook*（-mailtoがある場合）
  4. *process-command-line-hook*（不明なオプションがある場合）
  5. *post-startup-hook*


■*pre-abbrev-expand-hook*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: expand-abbrev
[File       ]: abbrev.l
[Section    ]: 変数と定数
[Description]: 
expand-abbrevの最初に実行されます。


■*pre-command-hook*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: *post-command-hook*
[Section    ]: 変数と定数
[Description]: 
コマンドループにおいてコマンドの実行前に実行されます。


■*pre-startup-hook*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: 起動時処理フロー
[File       ]: estartup.l
[Section    ]: 変数と定数
[Description]: 
初期設定ファイルsiteinit.l実行後に実行されます。


■*prefix-args*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: *prefix-value*
[Section    ]: 変数と定数
[Description]: 
コマンドが数引き数付きで呼ばれた場合に設定される変数です。

  (defun test1 ()
    (interactive)
    (message "~s,~s " *prefix-args* *prefix-value*))

例えば、C-u 10 M-x test1と呼び出されると、
*prefix-args*がnon nilになり、*prefix-value*に値が入ります。


■*prefix-value*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: *prefix-args*
[Section    ]: 変数と定数
[Description]: 
コマンドが数引き数付きで呼ばれた時に数値が入ります。


■*print-circle*
[Type       ]: Variable
[Package    ]: lisp
[Section    ]: 変数と定数
[Description]: 
循環リストの表示を省略形にします

標準はnilです。read-eval-printのループでの
表示は常にtのようです。

(setq *print-circle* nil) => nil
(setq x (list 'a))        => (a)
(setf (cdr x) x)          => #1=(a . #1#)
(princ x)
=> (a a a ...
;;無限に続くのでC-gで終了
(setq *print-circle* t)   => t
(princ x)
#1=(a . #1#)
=> #1=(a . #1#)


■*print-completion-list-hook*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: *popup-completion-list-default*
[File       ]: complete.l
[Section    ]: 変数と定数
[Description]: 
do-completion実行時に、補完リストを表示するために使用されています。
ポップアップ表示の前に処理されます。 
※funcallで実行されるので注意すること
  
使用例：
  (setq *print-completion-list-hook*
        '(lambda (list prefix &optional string)
          (popup-string
           (format nil
                   "Possible completions are ~D items:\n~{\n~A~}"
                   (length list) list) (point))))


■*print-length*
[Type       ]: Variable
[Package    ]: lisp
[Section    ]: 変数と定数
[Description]: 
長いリストの表示を途中で打ち切ります。

(setq *print-length* nil) => nil
(princ '(a b c d e f g h i j))
=>(a b c d e f g h i j)

(setq *print-length* 5)   => 5
(princ '(a b c d e f g h i j))
=>(a b c d e ...)


■*print-option-show-dialog*
[Type       ]: Variable
[Package    ]: editor
[File       ]: estartup.l
[Section    ]: その他
[Description]: 
nilの場合は、コマンドラインオプションで -p を指定した時、印刷ダイアログ
を表示しません。


■*print-pretty*
[Type       ]: Variable
[Package    ]: lisp
[Section    ]: 変数と定数
[Description]: 
式の表示を見やすくします。

標準はtです。

(flet ((f (x) (princ x) (terpri)))
  (let ((*print-pretty* t))
    (f '('a #'b))  ;;tの時の表示
    (setq *print-pretty* nil)
    (f '('a #'b))));;nilの時の表示
=> ('a #'b)
   ((quote a) (function b))


■*process-command-line-hook*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: 起動時処理フロー
[File       ]: estartup.l
[Section    ]: システム
[Description]: 
xyzzy.exeに渡されたオプション引数を判定する際に呼び出されます。
*post-startup-hook*の直前で呼び出されます。

参考：
  (run-hook-with-args-until-success
   '*process-command-line-hook* arg)


■*query-kill-buffer-hook*
[Type       ]: Variable
[Package    ]: editor
[File       ]: buffer.l
[Section    ]: 変数と定数
[Description]: 
kill-bufferで実行されます。バッファの破棄を確認するために使用します。
※run-hook-with-args-while-successで実行されるので注意すること。


■*query-kill-xyzzy-hook*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: *kill-xyzzy-hook*
[Section    ]: 変数と定数
[Description]: 
xyzzy終了時に実行されます。このフック変数の実行がnilだと終了しない。
[xyzzy:03872]を参照


■*quotation-prefix*
[Type       ]: Variable
[Package    ]: editor
[File       ]: region.l
[Section    ]: テキスト
[Description]: 
引用を表す接頭子です。具体的には、quote-regionしたときにリージョンの行頭
に挿入する文字列です。

参考：
  ;;; 初期値ではこんなものが設定されています。
  (defvar *quotation-prefix* "| ")


■*random-state*
[Type       ]: Variable
[Package    ]: lisp
[Seealso    ]: random , make-random-state
[Section    ]: 数値
[Description]: 
現在の乱数の状態を保持してます。
random が STATE 無しで呼ばれたとき使われます。


■*rectangle-kill-buffer*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: copy-rectangle , kill-rectangle , yank-rectangle
[File       ]: rectangl.l
[Section    ]: リージョン
[Description]: 
コピーした矩形を格納します。
中身は矩形の各行の文字列を並べたリストです。


■*save-buffer-no-filenames-hook*
[Type       ]: Variable
[Package    ]: editor
[Section    ]: 変数と定数
[Description]: 
get-buffer-file-name が nil とかだと実行されます。
使用例:
  (add-hook '*save-buffer-no-filenames-hook*
  	  #'(lambda ()
  	      (if (yes-or-no-p "保存しますか")
  		  ;;この時点でset-buffer-file-nameをしても遅い。
  		  ;;emacs-write-fileなりを呼んでからnon-nilを渡すべき
  		  (emacs-write-file (read-file-name "filename:"))
  		;;次のhookに処理を渡す場合はnilを渡す
  		nil)))


■*save-history*
[Type       ]: Variable
[Package    ]: editor
[File       ]: history.l
[Section    ]: 変数と定数
[Description]: 
保存するヒストリの個数です。
[共通設定] - [いろいろ] - [保存するヒストリの個数(S)] で値を指定すること
ができます。


■*save-history-hook*
[Type       ]: Variable
[Package    ]: editor
[File       ]: history.l
[Section    ]: 変数と定数
[Description]: 
*kill-xyzzy-hook*実行時に呼び出されます。
コマンドバー、セッション等のヒストリ変数の保存に使用されています。


■*save-resume-info*
[Type       ]: Variable
[Package    ]: editor
[File       ]: history.l
[Section    ]: 変数と定数
[Description]: 
non-nil ならば終了時の状態を保存します。
[共通設定] - [さまざま] - [終了時の状態を保存する(U)] で値を指定すること
ができます。


■*select-pseudo-frame-hook*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: フレームの概要 , new-pseudo-frame , select-pseudo-frame
[File       ]: pframe.l
[Section    ]: ウィンドウ
[Description]: 
フレームを選択、移動、および新規作成したときに実行されます。
すべてのフレームに対して適用されます。

フレームごとに違う動作をさせたい場合は、
フレーム構造体のスロット selected-fn に関数を設定します。


■*selection-ring*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: yank-selection , copy-selection
[File       ]: select.l
[Section    ]: リージョン
[Description]: 
copy-selectionやkill-selectionで切り取った選択された領域を管理します。
*selection-ring*は*kill-ring*と同様にリングバッファとして管理されます。


■*show-cursor-line-always*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: toggle-cursor-line , inverse-cursor-line
[Section    ]: バッファ
[Description]: 
カレントでないウィンドウでもカーソルラインを表示します。

使用例：
  (setq *show-cursor-line-always* t)


■*show-match-hook*
[Type       ]: Variable
[Package    ]: editor
[File       ]: search.l
[Section    ]: 変数と定数
[Description]: 
検索で一致したものの表示に使用しています。設定されていなければ、
show-matchが実行されます。
※run-hook-with-args-while-successで実行されるので注意すること。


■*show-matched-parenthesis*
[Type       ]: Variable
[Package    ]: editor
[File       ]: cmds.l
[Section    ]: バッファ
[Description]: 
対応する括弧の表示を制御します。括弧に使用する文字は
set-syntax-matchで指定します。
  non-nil  対応する括弧を表示する
  nil      対応する括弧を表示しない


■*smart-indentation*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: smart-indentation
[File       ]: cmds.l
[Section    ]: ポジション
[Description]: 
インデント処理の前後で全く変更する必要が無かった場合の制御を設定します。

  nil      位置が同じでも従来通り常に変更する
  t        位置が違う場合のみ変更する（タブとスペースの組み合わせは気にする）
  上記以外 位置が違う場合のみ変更する（タブとスペースの組み合わせは気にしない）


■*standard-input*
[Type       ]: Variable
[Package    ]: lisp
[Seealso    ]: *standard-output* , *keyboard*
[Section    ]: 入出力
[Description]: 
標準入力を表すストリームです。
普段はキーボードからの入力になっています。


■*standard-output*
[Type       ]: Variable
[Package    ]: lisp
[Seealso    ]: *standard-input*
[Section    ]: 入出力
[Description]: 
標準出力を表すストリームです。
普段はステータスバーのウィンドウへの出力になっています。
lisp-interaction-mode の C-j(eval-print-last-sexp) では
そのバッファへの出力になっています。

使用例：
  ;;; eval-expression で評価した場合
  *standard-output*  
  => #<status window stream 48042808>

  ;;; eval-print-last-sexp で評価した場合
  *standard-output*
  => #<buffer stream 48042280>


■*status-bar-format*
[Type       ]: Variable
[Package    ]: editor
[File       ]: page.l
[Section    ]: ウィンドウ
[Description]: 
ステータスバーに表示する情報を指定する文字列です。文字の並び順に表示されます。

  t     時計
  p     カーソル位置
  c     カーソル位置の文字コード(内部コード)
  u     カーソル位置の文字コード(ユニコード)
  T     時計（曜日入り）

使用例：
  (setq *status-bar-format* "cupT")


■*std-control-default-char*
[Type       ]: Variable
[Package    ]: editor
[File       ]: defs.l
[Section    ]: ダイアログ
[Description]: 
select-bufferやダイアログのリストボックスで、デフォルト選択用の
キャラクタを設定します。

使用例：
  (setq *std-control-default-char* #\RET)


■*std-control-down-char*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: *std-control-up-char*
[File       ]: defs.l
[Section    ]: ダイアログ
[Description]: 
select-bufferやダイアログのリストボックスで、下方向に移動するキ
ャラクタを設定します。

使用例：
  (setq *std-control-down-char* #\C-n)


■*std-control-next-char*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: *std-control-prior-char*
[Section    ]: ダイアログ
[Description]: 
select-bufferやダイアログのリストボックスで、
ページダウンするキャラクタを設定します。

使用例：
  (setq *std-control-next-char* #\C-v)


■*std-control-prior-char*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: *std-control-next-char*
[Section    ]: ダイアログ
[Description]: 
select-bufferやダイアログのリストボックスで、
ページアップするキャラクタを設定します。

使用例：
  (setq *std-control-prior-char* #\C-u)


■*std-control-up-char*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: *std-control-down-char*
[File       ]: defs.l
[Section    ]: ダイアログ
[Description]: 
select-bufferやダイアログのリストボックスで、上方向に移動するキ
ャラクタを設定します。

使用例：
  (setq *std-control-up-char* #\C-p)


■*tail-f-mode-hook*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: tail-f
[File       ]: tail-f.l
[Section    ]: モード
[Description]: 
tail-f起動時に実行されます。


■*this-command*
[Type       ]: Variable
[Package    ]: editor
[Section    ]: 変数と定数
[Description]: 
現在実行中の関数名のシンボルを格納しています。*last-command*に設定されます。
*pre-command-hook* / *post-command-hook*で特別な処理をかますのに使ったり、
実行中のコマンドを偽ったりできます。


■*unicode-to-half-width*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: unicode-char
[Section    ]: 文字
[Description]: 
non-nil なら、UNICODE 文字の表示に半角文字を使用します。
デフォルトでは t が xyzzy ソース内で設定されています。

使用例：
  ;;; 半角文字で表示
  (setq *unicode-to-half-width* t)   => t
  (unicode-char 180)                 => #\x0134
  ;;; 全角文字で表示
  (setq *unicode-to-half-width* nil) => nil
  (unicode-char 180)                 => #\´


■*wrap-search*
[Type       ]: Variable
[Package    ]: editor
[File       ]: search.l
[Section    ]: 検索・正規表現
[Description]: 
文字列検索でバッファの最後までいったら、最初に戻るかどうかを制御します。

| search-forward-again で、バッファの最後まで行くと、最初に
| 戻って探しつづけますよね。
| あれって禁止できないでしょうか？

  (setq *wrap-search* nil)

とすればできますけど、たまに禁止したいとなるとちょっと面倒ですね。

| と言うか、それはそれで便利なんだけど、禁止したい時もあるんです。
| 「ここ以降にあるか無いか」と言うことを知りたい時とか・・・

現在位置から最後までを narrow してサーチするとか。
count-matches が 0 だったら無いとか。
検索ダイアログから指定するとか。


■+
[Type       ]: Function
[Arguments  ]: + &rest NUMBERS
[Package    ]: lisp
[Seealso    ]: -
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
引数を全て加算して返します。

使用例：  
  (+ 1 2 3)
  => 6
  (+ 1.2 4 -2)
  => 3.2


■-
[Type       ]: Function
[Arguments  ]: - NUMBER &rest MORE-NUMBERS
[Package    ]: lisp
[Seealso    ]: +
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
引数が一つの場合にはその数値をマイナスにしたものを返します。
引数が二つ以上の場合には一つ目の引数からその他の引数を減算した数値を返します。

使用例：
  (- 3)
  => -3
  (- 3 2 1)
  => 0


■/
[Type       ]: Function
[Arguments  ]: / NUMBER &rest MORE-NUMBERS
[Package    ]: lisp
[Seealso    ]: *
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
引数が一つの場合には 1 を引数で除算した数値を返します。
引数が二つ以上の場合には一つ目の引数を二つ目の引数全てで除算した数値を返します。
  
使用例：  
  (/ 2)
  => 1/2  
  (/ 3 2 1)
  => 3/2
  (/ 4 3 2)
  => 2/3


■/=
[Type       ]: Function
[Arguments  ]: /= NUMBER &rest MORE-NUMBERS
[Package    ]: lisp
[Seealso    ]: =
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
引数がすべて異なっていればt、そうでなければnilを返します。

使用例：  
  (/= 2 3)
  => t
  (/= 3 3)
  => nil
  (/= 2 3 4 5)
  => t
  (/= 2 3 4 2)
  => nil


■1+
[Type       ]: Function
[Arguments  ]: 1+ NUM
[Package    ]: lisp
[Seealso    ]: 1-
[File       ]: number.l
[Section    ]: 数値
[Description]: 
NUMに1を足した数を返します。

使用例：  
  (1+ 1)
  => 2


■1-
[Type       ]: Function
[Arguments  ]: 1- NUM
[Package    ]: lisp
[Seealso    ]: 1+
[File       ]: number.l
[Section    ]: 数値
[Description]: 
NUMから1を引いた数を返します。

使用例：  
  (1- 2)
  => 1


■:case-fold
[Type       ]: Keyword
[Package    ]: keyword
[Seealso    ]: scan-buffer
[Section    ]: 変数と定数
[Description]: 
検索する場合に大文字と小文字を区別するかどうかを指定します。

  t     大文字と小文字を区別しません。
  nil   大文字と小文字を区別します。


■:key
[Type       ]: Keyword
[Package    ]: keyword
[Seealso    ]: :test , :test-not
[Section    ]: 変数と定数
[Description]: 
assoc や member、find などの関数で検索をする際に
各要素に適用する関数を指定します。
言い換えると、:test や :test-not で指定された関数に渡す値を
各要素から“取り出す”方法をこの関数で指定します。

使用例:
  ;; car が 'a である要素を除去する
  (remove 'a '((a . b) (b . x) (c d e) (a f h i) (x y)) :key #'car)
  => ((b . x) (c d e) (x y))
  ;; :test と組み合わせることも可能
  (remove "a" '(("a" . "b") ("b" . "c") ("d" . "a") ("a" . "e") ("b". "b"))
          :test #'string= :key #'car)
  => (("b" . "c") ("d" . "a") ("b" . "b"))


■:no-dup
[Type       ]: Keyword
[Package    ]: keyword
[Seealso    ]: scan-buffer
[Section    ]: 変数と定数
[Description]: 
検索する場合に同じ位置から行うかどうかを指定します。

  t     ひとつ次から検索を行う。
  nil   同じ位置から検索を行う。


■:regexp
[Type       ]: Keyword
[Package    ]: keyword
[Seealso    ]: scan-buffer
[Section    ]: 変数と定数
[Description]: 
検索文字列が正規表現か否かを指定します。

  t     検索文字列は正規表現
  nil   検索文字列はただの文字列


■:reverse
[Type       ]: Keyword
[Package    ]: keyword
[Seealso    ]: scan-buffer
[Section    ]: 変数と定数
[Description]: 
検索する場合に正方向か逆方向かを指定します。

  t     逆方向に検索します。
  nil   正方向に検索します。


■:right-bound
[Type       ]: Keyword
[Package    ]: keyword
[Seealso    ]: scan-buffer
[Section    ]: 変数と定数
[Description]: 



■:tail
[Type       ]: Keyword
[Package    ]: keyword
[Seealso    ]: scan-buffer
[Section    ]: 変数と定数
[Description]: 
検索した場合にカーソルを文字列の先頭か末尾のどちらに位置づけるかを指定します。

  t     カーソルを末尾に位置づけます。
  nil   カーソルを先頭に位置づけます。


■:test
[Type       ]: Keyword
[Package    ]: keyword
[Seealso    ]: :test-not , :key
[Section    ]: 変数と定数
[Description]: 
assoc や member、find などの関数で検索をする際に、
このキーワードに設定した関数を用いて真偽の判定をします。

なお :test-not と同時に指定することはできません。

使用例:
  (assoc "b" '(("a" . 1) ("B" . 2) ("b" . 3) ("c" . 4)))
  => nil
  (assoc "b" '(("a" . 1) ("B" . 2) ("b" . 3) ("c" . 4)) :test #'string=)
  => ("b" . 3)
  (assoc "b" '(("a" . 1) ("B" . 2) ("b" . 3) ("c" . 4)) :test #'string-equal)
  => ("B" . 2)


■:test-not
[Type       ]: Keyword
[Package    ]: keyword
[Seealso    ]: :test , :key
[Section    ]: 変数と定数
[Description]: 
assoc や member、find などの関数で検索をする際に、
このキーワードに設定した関数の逆（not）を用いて真偽の判定をします。
  
なお :test と同時に指定することはできません。

使用例:
  ;; "abc" を含む文字列を選ぶ = "abc" を含まない文字列を除去する
  (remove "abc" '("abcd" "test" "xabcx" "abc" "xyz") :test-not #'string-match)
  => ("abcd" "xabcx" "abc")


■<
[Type       ]: Function
[Arguments  ]: < NUMBER &rest MORE-NUMBERS
[Package    ]: lisp
[Seealso    ]: >
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
引数が小さい順に並んでいればt、そうでなければnilを返します。

使用例：  
  (< 2 3 4)
  => t
  (< 2 4 3 5)
  => nil


■<=
[Type       ]: Function
[Arguments  ]: <= NUMBER &rest MORE-NUMBERS
[Package    ]: lisp
[Seealso    ]: >=
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
隣り合った引数がすべて<=の関係ならt、そうでなければnilを返します。

使用例：  
  (<= 2 3 3 4)
  => t
  (<= 2 4 3 5)
  => nil


■=
[Type       ]: Function
[Arguments  ]: = NUMBER &rest MORE-NUMBERS
[Package    ]: lisp
[Seealso    ]: /=
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
引数がすべて等しければt、そうでなければnilを返します。

使用例：  
  (= 3 3)
  => t
  (= 3 4)
  => nil
  (= 3 3 3 3)
  => t
  (= 3 3 3 4)
  => nil


■>
[Type       ]: Function
[Arguments  ]: > NUMBER &rest MORE-NUMBERS
[Package    ]: lisp
[Seealso    ]: <
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
引数が大きい順に並んでいればt、そうでなければnilを返します。

使用例：  
  (> 3 2 1)
  => t
  (> 3 2 1 4)
  => nil


■>=
[Type       ]: Function
[Arguments  ]: >= NUMBER &rest MORE-NUMBERS
[Package    ]: lisp
[Seealso    ]: <=
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
隣り合った引数がすべて>=の関係ならt、そうでなければnilを返します。
  
使用例：  
  (>= 4 3 3 2 1)
  => t
  (>= 4 2 3 1)
  => nil


■abbrev-mode
[Type       ]: Function
[Arguments  ]: abbrev-mode &optional (ARG () SV)
[Package    ]: editor
[Seealso    ]: quietly-read-abbrev-file
[File       ]: abbrev.l
[Section    ]: モード
[Description]: 
abbrev-modeを開始します。

使用例：
  (abbrev-mode t)


■abbreviate-display-string
[Type       ]: Function
[Arguments  ]: abbreviate-display-string STRING LENGTH &optional PATHNAMEP
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: 文字列
[Description]: 
文字列を表示幅に収まるように[...]で省略して返します。

  STRING    : 表示する文字列を指定します。
  LENGTH    : 表示幅を指定します。
  PATHNAMEP : 文字列がファイル名かどうかを指定します。
              ファイル名の場合には先頭の3文字(例："C:/"）だけ残して省略します。

使用例：
 (abbreviate-display-string "c:/xyzzy/lisp/builtin.l" 20 nil)
 => "c:/xyzzy.../builtin.l"
 (abbreviate-display-string "c:/xyzzy/lisp/builtin.l" 20 t)
 => "c:/.../lisp/builtin.l"


■abs
[Type       ]: Function
[Arguments  ]: abs NUMBER
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
絶対値を返します。

使用例：
  ;;; 絶対値を返す。
  (abs -3.0)
  => 3.0


■acons
[Type       ]: Function
[Arguments  ]: acons KEY DATUM A-LIST
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: リスト
[Description]: 
(KEY . DATUM) を A-LIST に加えた連想リストを返します。

  (acons x y a) == (cons (cons x y) a)

使用例：
  (setq foo '((b . 2))) => ((b . 2))
  (acons 'a 1 foo)      => ((a . 1) (b . 2))
  foo                   => ((b . 2))


■acos
[Type       ]: Function
[Arguments  ]: acos NUMBER
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
逆余弦関数の値を返します。


■acosh
[Type       ]: Function
[Arguments  ]: acosh Z
[Package    ]: lisp
[Seealso    ]: acos
[File       ]: number.l
[Section    ]: 数値
[Description]: 
逆双曲線余弦関数を計算します。


■add-file-history-to-menu
[Type       ]: Function
[Arguments  ]: add-file-history-to-menu
[Package    ]: editor
[File       ]: app-menu.l
[Section    ]: その他
[Description]: 
ファイルメニューの履歴のところに履歴を記録する？
（詳細不明）
(add-file-history-to-menu)


■add-history
[Type       ]: Function
[Arguments  ]: add-history ITEM VAR
[Package    ]: editor
[File       ]: minibuf.l
[Section    ]: 変数と定数
[Description]: 
（詳細不明）

使用例：
  (add-history file '*minibuffer-file-name-history*)
  (add-history cmd '*minibuffer-execute-history*)


■add-hook
[Type       ]: Function
[Arguments  ]: add-hook HOOK FN &optional APPEND
[Package    ]: editor
[Seealso    ]: delete-hook , run-hooks
[File       ]: misc.l
[Section    ]: モード
[Description]: 
フック変数に関数を追加します。

  HOOK : フック変数のシンボルを指定します。
  FN   : 関数のシンボルを指定します。

フックとは特定の処理においてユーザが望む処理を追加するための仕組みです。
xyzzyには「ユーザが修正したいだろうなぁ」と思うところにフックが仕掛けら
れています。例えば「find-fileするときには何か関数を実行したい」と思った
ら、「find-fileを上書き」したり、「xxx-find-fileを作ったり」するのではな
く、その用途に使えるフック変数がないかどうかを確認しましょう。

下の例はfind-fileする時にfunc1とfunc2を呼び出して何らかの処理をする例です。

  【準備処理】
        ;;; find-fileで呼び出される*before-find-file-hook*に
        ;;; ユーザが作った関数func1とfunc2が呼び出されるように登録する。
        (add-hook '*before-find-file-hook* 'func1)
        (add-hook '*before-find-file-hook* 'func2)

  【find-file実行時】
        ;;; find-fileを実行すると、ファイルの読み込みの前で
        ;;; *before-find-file-hook*に登録されている関数が実行される。
        (find-file ...)
          └(run-hooks '*before-find-file-hook*)
              ├(func1)
              └(func2)

  【後片付け】
        ;;; find-fileで呼び出される*before-find-file-hook*から
        ;;; ユーザが作った関数func1とfunc2を取り除く
        (delete-hook '*before-find-file-hook* 'func1)
        (delete-hook '*before-find-file-hook* 'func2)

なお、フック変数は用途に応じて呼び出され方や戻す値の意味が異なります。注
意しましょう。

使用例：
  ;;; lispmode.l
  (add-hook '*query-kill-buffer-hook* 'kill-scratch-hook)


■add-menu-item
[Type       ]: Function
[Arguments  ]: add-menu-item MENU TAG NAME &optional COMMAND INIT
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: メニュー
[Description]: 
新たに作成したメニュー項目をメニューの末尾に追加します。

  MENU    : 追加先のメニューを指定します。
  TAG     : 識別用のタグを指定します。
  NAME    : メニューに表示される名前を指定します。
  COMMAND : メニューの項目が選択されたときに実行するコマンドを指定します。
  INIT    : メニューが開く直前に評価し返される値によってメニューの状態を
            設定します。任意のS式が指定できますが、あまり無茶なことはしな
            いでください。式の値として意味のある値には以下のものがあります。

        :modified     カレントバッファが変更されていなければ灰色表示。
        :undo         undo不可能であれば灰色表示。
        :redo         redo不可能であれば灰色表示。
        :selection    カレントバッファのテキストが未選択であるか矩形選択
                      であれば灰色表示。
        :rectangle    カレントバッファのテキストが未選択であるか矩形以外
                      の選択であれば灰色表示。
        :clipboard    クリップボードが空であれば灰色表示。
        :check        チェック。
        :disable      灰色表示。
        その他        使用可能。


■add-menu-separator
[Type       ]: Function
[Arguments  ]: add-menu-separator MENU &optional TAG
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: メニュー
[Description]: 
セパレータをメニューの末尾に追加します。

  MENU : 追加先のメニューを指定します。
  TAG  : 識別用のタグを指定します。


■add-popup-menu
[Type       ]: Function
[Arguments  ]: add-popup-menu MENU POPUP-MENU NAME
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: メニュー
[Description]: 
ポップアップメニューをメニューの末尾に追加します。

  MENU       : 追加先のメニューを指定します。
  POPUP-MENU : 追加するポップアップメニューを指定します。
  NAME       : メニューに表示される名前を指定します。

使用例：
  ;;; 右クリックメニューを標準のメニューに追加してみる。
  (add-popup-menu *app-menu* *app-popup-menu* "編集2(&E)")
  => #<menu 48701736>


■adjoin
[Type       ]: Function
[Arguments  ]: adjoin ITEM LIST &key :test :test-not :key
[Package    ]: lisp
[Seealso    ]: pushnew
[File       ]: builtin.l
[Section    ]: リスト
[Description]: 
ITEM が LIST の member でなければ先頭に追加した LIST を返す。 member なら LIST を
そのまま返します。

  (adjoin item list) == (if (member item list) list (cons item list))

  :key : :keyに fn が指定された場合，xyzzyでは
          (adjoin item list) == (if (member item list :key fn) list (cons item list))
         となりますが，CLTL2では次のように動作し，非互換です．
          (adjoin item list) == (if (member (funcall fn item) list :key fn) list (cons item list))

使用例：
  (adjoin 'a '(b c d))
  => (a b c d)
  (adjoin 'b '(a b c d))
  => (a b c d)
  (adjoin '(a) '((b) (c) (d)) :key #'car)
  => ((a) (b) (c) (d))


■adjustable-array-p
[Type       ]: Function
[Arguments  ]: adjustable-array-p ARRAY
[Package    ]: lisp
[Seealso    ]: make-array
[File       ]: builtin.l
[Section    ]: 配列
[Description]: 
ARRAY がサイズ変更可能なら t、不可能なら nil を返します。


■alpha-char-p
[Type       ]: Function
[Arguments  ]: alpha-char-p CHAR
[Package    ]: lisp
[Seealso    ]: alphanumericp
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
文字が英字[A-Za-z]かどうかを判定します。

  CHAR : 判定する文字


■alphanumericp
[Type       ]: Function
[Arguments  ]: alphanumericp CHAR
[Package    ]: lisp
[Seealso    ]: alpha-char-p
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
文字が英数字[A-Za-z0-9]かどうかを判定します。

  CHAR : 判定する文字


■and
[Type       ]: Macro
[Arguments  ]: and {FORM}*
[Package    ]: lisp
[Seealso    ]: or
[File       ]: evalmacs.l
[Section    ]: 制御構造
[Description]: 
フォームがnilでない間だけ順番に評価します。
フォームが一つでもnilならば、そこで評価を中断してnilを返して終了します。
全てのフォームがnilでなければ、最後に実行したフォームの値を返します。

  ;;; exp1 がnot-nilなら exp2を実行し、
  ;;; exp2 がnot-nilなら exp3を実行し、
  ;;; exp3 がnot-nilなら.......
  (and exp1 exp2 exp3 ...)

例えば、以下の様にチェックを順番に記述するような場合に向いていると思います。
チェックに失敗すれば、以降の処理は実行しません。

  (and (file-exist-p ...) ; 特定のファイルの存在チェック
       (find-file ...)    ; そのファイルを読み込みチェック
       (scan-buffer ...)  ; 正規表現で検索
       (match-string 2)   ; 検索結果のチェック
       ...)


■append
[Type       ]: Function
[Arguments  ]: append &rest LISTS
[Package    ]: lisp
[Seealso    ]: nconc
[File       ]: builtin.l
[Section    ]: リスト
[Description]: 
この関数は、LISTS の全要素を含むリストを返します。最後の 1 つを除いた各
リストは全てコピーされ、変更されることはありません。empty シーケンスは結
果に何の影響も及ぼしませんが、最後に置かれた nil はその前の全引数のコピ
ーを作らせることになる点に注意して下さい。

1 つの機能として、 (整数型のシーケンスではなく) LISTS の 1 つが整数型で
ある特別な場合には、最初にその整数型の 10進 print 表現の文字列に変換しま
す。（この機能本当にありますか？）

最後の引数は、どんなオブジェクトであってもかまいません。ただし、通常はリ
ストであり、コピーされたり変換されることはありません。 LISTSが与えられな
い場合には、nil を返します。

使用例：
  ;;; 整数型の変換の機能があるのかどうか不明
  (setq x '(1 2 3))               => (1 2 3)
  (append x '(4 5))               => (1 2 3 4 5)
  x                               => (1 2 3)
  (eq x (append x nil))           => nil
  (append nil x [4 5] "67" nil)   => (1 2 3 4 5 54 55)
  (append)                        => nil


■append-rectangle
[Type       ]: Function
[Arguments  ]: append-rectangle
[Package    ]: editor
[File       ]: rectangl.l
[Section    ]: リージョン
[Description]: 
コピーしている矩形の各行を現在行以下の行末へ追加します。

使用例：
  こんなのをコピーしているときに
          ┌────┐
          │A       │
          │BC      │
          │DEF     │
          │GHIJ    │
          └────┘
  * の位置で append-rectangle すると
   ┌─────┐      ┌─────┐
   │*-lmn     │      │--lmnA    │
   │--op      │  →  │--opBC    │
   │--        │      │--DEF     │
   │--q       │      │--qGHIJ   │
   └─────┘      └─────┘


■append-to-register
[Type       ]: Function
[Arguments  ]: append-to-register R START END &optional DELETE
[Package    ]: editor
[Seealso    ]: prepend-to-register
[File       ]: register.l
[Section    ]: リージョン
[Description]: 
START と END で指定されるリージョンを、レジスタ R に格納されているテキ
ストの末尾へ追加します。
R にテキストが入っていないとエラーになります。
DELETE が non-nil ならば同時にリージョンをを削除します。


■append-trail-slash
[Type       ]: Function
[Arguments  ]: append-trail-slash STRING
[Package    ]: editor
[Seealso    ]: remove-trail-slash
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
文字列の末尾に"/"がなければ"/"を追加します。

使用例：
  (append-trail-slash "ffjfj")
  => "ffjfj/"
  (append-trail-slash "ffjfj/")
  => "ffjfj/"


■apply
[Type       ]: Function
[Arguments  ]: apply FUNCTION ARG &rest MORE-ARGS
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 評価
[Description]: 
引数を格納したリストを指定して関数を表すシンボルから関数を呼び出します。
FNには関数を表すシンボルでも関数でも構いません。引数の個数が必ず定まって
いる場合には、applyを使う必要は無くfuncallの方が良いと思います。

使用例：
  ;;; carをいろいろな呼び出し方でする。
  (car '(a b c))                => a
  (apply 'car '((a b c)))       => a
  (apply #'car '((a b c)))      => a


■apps-popup
[Type       ]: Function
[Arguments  ]: apps-popup
[Package    ]: editor
[Seealso    ]: mouse-menu-popup
[File       ]: mouse.l
[Section    ]: メニュー
[Description]: 
ポップアップメニューを表示します。[Apps]

メニューは、*app-popup-menu* に定義されたものが使用されます。


■apropos
[Type       ]: Function
[Arguments  ]: apropos STRING &optional PRINT-KEY PRED
[Package    ]: editor
[Seealso    ]: *apropos-no-regexp*
[File       ]: help.l
[Section    ]: シンボル
[Description]: 
指定した正規表現に一致するシンボルの一覧を表示します。

  STRING    : 検索する文字列
  PRINT-KEY : バインドされているキーを表示するかどうか
        non-nil : 表示する
        nil     : 表示しない
  PRED      : ？？？


■archiver-dll-config-dialog
[Type       ]: Function
[Arguments  ]: archiver-dll-config-dialog DLL &optional MODE
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
アーカイバの設定ダイアログを表示します。

  DLL  : 設定するアーカイバを指定します。
  MODE : （詳細不明）

使用例：
  (archiver-dll-config-dialog :unlha32)


■archiver-dll-version
[Type       ]: Function
[Arguments  ]: archiver-dll-version DLL
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
アーカイバのバージョンを取得します。

  DLL  : アーカイバを指定します。

使用例：
  (archiver-dll-version :unrar32)
  => "0.09"


■aref
[Type       ]: Accessor
[Arguments  ]: aref ARRAY &rest SUBSCRIPTS
[Package    ]: lisp
[Seealso    ]: make-array , setf , svref
[File       ]: builtin.l
[Section    ]: 配列
[Description]: 
SUBSCRIPTS で特定される配列の要素にアクセスします。SUBSCRIPTS がなく配列が
ゼロ次元の場合は、配列のただひとつの要素にアクセスします。
具体的な使い方については、以下の例を参照してください。

使用例：
  ;;; 2x2の初期化された配列を作ります。値の取得・変更を行います。
  (setf foo (make-array '(2 2) :initial-contents '((1 2) (3 4))))
  =>#2A((1 2) (3 4))
  (aref foo 1 1);配列fooの要素(1,1)の値を得る
  =>4
  (setf (aref foo 1 1) 10);配列fooの要素(1,1)の値を10にする
  =>10
  foo
  =>#2A((1 2) (3 10))


■array-dimension
[Type       ]: Function
[Arguments  ]: array-dimension ARRAY AXIS-NUMBER
[Package    ]: lisp
[Seealso    ]: array-dimensions
[File       ]: array.l
[Section    ]: 配列
[Description]: 
配列 ARRAY の AXIS-NUMBER 番目の次元のサイズを返します。
AXIS-NUMBER は 0 から始まる整数値です。
なお、フィルポインタを持っているベクタに関しても、本来のサイズを返します。

使用例:
  (setf x (make-array '(2 3)))
  => #2A((nil nil nil) (nil nil nil))
  (array-dimension x 0)
  => 2
  (array-dimension x 1)
  => 3

  ;; フィルポインタつきのベクタ
  (setf x (make-array 5 :initial-contents '(a b c d e) :fill-pointer 3))
  => #(a b c)
  (array-dimension x 0)
  => 5
  (length x) ; length だとフィルポインタまでの長さになる
  => 3


■array-dimensions
[Type       ]: Function
[Arguments  ]: array-dimensions ARRAY
[Package    ]: lisp
[Seealso    ]: array-dimension , array-total-size
[File       ]: array.l
[Section    ]: 配列
[Description]: 
配列 ARRAY の各次元のサイズをリストにして返します。

使用例:
  (setf x (make-array '(2 3)))
  => #2A((nil nil nil) (nil nil nil))
  (array-dimensions x)
  => (2 3)


■array-element-type
[Type       ]: Function
[Arguments  ]: array-element-type ARRAY
[Package    ]: lisp
[Seealso    ]: make-array
[File       ]: builtin.l
[Section    ]: 配列
[Description]: 
ARRAY の要素のタイプを判別します。
配列なら t、文字列なら character を返します。


■array-has-fill-pointer-p
[Type       ]: Function
[Arguments  ]: array-has-fill-pointer-p ARRAY
[Package    ]: lisp
[Seealso    ]: fill-pointer
[File       ]: builtin.l
[Section    ]: 配列
[Description]: 
配列 ARRAY がフィルポインタを持っているなら t、
持っていないなら nil を返します。


■array-rank
[Type       ]: Function
[Arguments  ]: array-rank ARRAY
[Package    ]: lisp
[Seealso    ]: make-array
[File       ]: builtin.l
[Section    ]: 配列
[Description]: 
配列 ARRAY の次元を返します。

使用例:
  (setf x (make-array '(2 3)))
  => #2A((nil nil nil) (nil nil nil))
  (array-rank x)
  => 2


■array-row-major-index
[Type       ]: Function
[Arguments  ]: array-row-major-index ARRAY &rest SUBSCRIPTS
[Package    ]: lisp
[Seealso    ]: row-major-aref
[File       ]: builtin.l
[Section    ]: 配列
[Description]: 
ARRAY の SUBSCRIPTS で表される要素が、ARRAY を一次元の配列とみなしたときに
何番目の要素にあたるかのインデックスを返します。

SUBSCRIPTS の数は ARRAY の次元と等しい必要があり、
また各引数は ARRAY の各次元のサイズ未満である必要があります。

使用例:
  (setf x (make-array '(2 3)))
  => #2A((nil nil nil) (nil nil nil))
  (array-row-major-index x 0 2)
  => 2
  (array-row-major-index x 1 1)
  => 4

  上の例はこんな感じです。

        0   1   2
     ┌─┬─┬─┐
   0 │ 0│ 1│ 2│
     ├─┼─┼─┤
   1 │ 3│ 4│ 5│
     └─┴─┴─┘


■array-total-size
[Type       ]: Function
[Arguments  ]: array-total-size ARRAY
[Package    ]: lisp
[Seealso    ]: array-dimension , array-dimensions
[File       ]: builtin.l
[Section    ]: 配列
[Description]: 
配列 ARRAY の全要素数を返します。

使用例:
  (setf x (make-array '(2 3)))
  => #2A((nil nil nil) (nil nil nil))
  (array-total-size x)
  => 6


■arrayp
[Type       ]: Function
[Arguments  ]: arrayp OBJECT
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
OBJECT が array なら t 、それ以外なら nil を返します。


■ash
[Type       ]: Function
[Arguments  ]: ash INTEGER COUNT
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
整数をロジカルにシフトします。

  INTEGER : シフトする数値
  COUNT   : ビット数分だけ正ならば左に、負ならば右にシフト
  
例：
  ;;; 4を左と右に3ビットずつシフトさせてみる。
  (ash 4 3)
  => 32
  (ash 4 -3)
  => 0


■asin
[Type       ]: Function
[Arguments  ]: asin NUMBER
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
逆正弦関数の値を返します。


■asinh
[Type       ]: Function
[Arguments  ]: asinh Z
[Package    ]: lisp
[Seealso    ]: asin
[File       ]: number.l
[Section    ]: 数値
[Description]: 
逆双曲線正弦関数を計算します。


■assoc
[Type       ]: Function
[Arguments  ]: assoc ITEM A-LIST &key :test :test-not :key
[Package    ]: lisp
[Seealso    ]: assoc-if , assoc-if-not , rassoc
[File       ]: builtin.l
[Section    ]: リスト
[Description]: 
連想リスト A-LIST の中で car 部が ITEM との :test を満たす最初のペアを返します。

使用例：
  (assoc 'r '((a . b) (c . d) (r . x) (s . y) (r . z))) 
  =>  (r . x) 
  (assoc 'goo '((foo . bar) (zoo . goo)))
  => nil 
  (assoc '2 '((1 a b c) (2 b c d) (-7 x y z)))
  => (2 b c d)


■assoc-if
[Type       ]: Function
[Arguments  ]: assoc-if PREDICATE A-LIST &key :key
[Package    ]: lisp
[Seealso    ]: assoc , assoc-if-not
[File       ]: builtin.l
[Section    ]: リスト
[Description]: 
連想リスト A-LIST の中で car 部が PREDICATE を満たす最初のペアを返します。

使用例：
  (assoc-if #'numberp '((a . b) (1 . c) (2 . d)))
  => (1 . c)


■assoc-if-not
[Type       ]: Function
[Arguments  ]: assoc-if-not PREDICATE A-LIST &key :key
[Package    ]: lisp
[Seealso    ]: assoc , assoc-if
[File       ]: builtin.l
[Section    ]: リスト
[Description]: 
連想リスト A-LIST の中で car 部が PREDICATE を満たさない最初のペアを返します。

使用例：
  (assoc-if-not #'numberp '((a . b) (1 . c) (2 . d)))
  => (a . b)


■atan
[Type       ]: Function
[Arguments  ]: atan Y &optional X
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
逆正接関数の値を返します。


■atanh
[Type       ]: Function
[Arguments  ]: atanh Z
[Package    ]: lisp
[Seealso    ]: atan
[File       ]: number.l
[Section    ]: 数値
[Description]: 
逆双曲線正接関数を計算します。


■atom
[Type       ]: Function
[Arguments  ]: atom OBJECT
[Package    ]: lisp
[Seealso    ]: consp
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
OBJECTがconsでなければt、それ以外ならnilを返します。

  (atom x) == (typep x 'atom) == (not (typep x 'cons))

注意：(atom '()) は '() == nilなのでt


■auto-fill-hook
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: *auto-fill-hook
[Section    ]: 変数と定数
[Description]: 
入力の結果、fill-columnを越えたらdo-auto-fillから実行されます。


■auto-fill-mode
[Type       ]: Function
[Arguments  ]: auto-fill-mode &optional (ARG () SARG)
[Package    ]: editor
[File       ]: fill.l
[Section    ]: テキスト
[Description]: 
自動詰め込みモードの開始と終了をトグルします。


■auto-save
[Type       ]: BufferLocal
[Package    ]: editor
[Section    ]: 変数と定数
[Description]: 
自動保存を行うかを制御するためのフラグです。
個々のバッファ毎や特定のモードだけしたくないのであれば、使用例の様にロー
カル変数にします。

  t     自動保存する
  nil   自動保存しない

使用例：
  ;;; 現在のバッファは自動保存しないようにする。
  (make-local-variable 'auto-save)
  => t  
  (setq auto-save nil)
  => nil


■autoload
[Type       ]: Function
[Arguments  ]: autoload FN FILE &optional COMMANDP MACROP
[Package    ]: lisp
[Seealso    ]: 各種ロード関係の関数の違い
[File       ]: misc.l
[Section    ]: 関数
[Description]: 
関数が呼び出された時点でファイルをロードするよう宣言します。

  FN       : 関数シンボルを指定します。
  FILE     : ロードするファイルを指定します。
  COMMANDP : 実行するときにinteractiveに実行するかどうかを指定します。
  MACROP   : マクロかどうかを指定します。

関数を呼び出す側からは、元々そのファイルがロードされていたかのように実行
を続けます。めったに使わない関数をautoloadで宣言しておくとメモリ消費量を
節約できます。また、起動が速くなります。

使用例：
  ;;; defs.lより
  (autoload 'search-dialog "dialogs" t)
  (autoload 'replace-dialog "dialogs" t)
  (autoload 'count-matches-dialog "dialogs" t)
  (autoload 'goto-line-dialog "dialogs" t)
  (autoload 'open-file-dialog "dialogs" t)

--- muleの説明 ---

Function: autoload symbol filename &optional docstring interactive macro

この関数は、(filename からオートロードするよう) symbol で名付けられた関
数 (もしくはマクロ)を定義します。 filename は、この関数を呼ぶ時 load に
渡すパス名です。 

docstring は、この関数用のドキュメンテーションです。これは(通常)この関数
の関数定義中のものと同じストリングになります。 

interactive が non-nil の場合、この関数はインタラクティブに呼ばれます。 
(ここでは)完全な interactive specification を与える必要はありません。 
macro が non-nil の場合、この関数は(実は)マクロです。 

symbol がすでに non-nil の関数セルを持つ場合、 autoload は(何もせず) nil 
を返します。 (関数セルが) void の場合、 symbol の関数セルに (autoload 
filename docstring interactive macro ) というオートロードフォームを設定
します。 

symbol の名前の関数を呼ぶと、(まず)オートロードフォームが評価され、 
filename の名前のファイルが load でロードされます。 (この後) symbol の関
数セルは Lisp 関数かマクロを指すことになります。そうならない場合、エラー
になります。 

(内容の評価でエラーが生じ) ファイルの評価が完全に行なえなかった場合、ロ
ード中に行なわれた関数定義や provide 呼び出しは undone されます(訳注：取
り消されます)。これは、(エラーを直した後)再び autoload できるようにする
ためです。


■autoload-function-p
[Type       ]: Function
[Arguments  ]: autoload-function-p DEF
[Package    ]: lisp
[Seealso    ]: autoload
[File       ]: misc.l
[Section    ]: 関数
[Description]: 
指定された関数がautoloadされたか否かを返します。
  nil 指定された関数がautoload済み
      もしくはautoloadしない関数の場合
  t   指定された関数がautoload前の場合

使用例：
  (export 'lisp-info-F1)
  (autoload 'lisp-info-F1 "info-modoki" t)
  (autoload-function-p 'lisp-info-F1)
  => t
  (lisp-info-F1)
  (autoload-function-p 'lisp-info-F1)
  => nil


■back-to-indentation
[Type       ]: Function
[Arguments  ]: back-to-indentation
[Package    ]: editor
[File       ]: cmds.l
[Section    ]: ポジション
[Description]: 
カーソルをインデントの末尾（行の最初の空白でない文字）へ移動します。


■backward-char
[Type       ]: Function
[Arguments  ]: backward-char &optional (N 1)
[Package    ]: editor
[File       ]: cmds.l
[Section    ]: ポジション
[Description]: 
指定された文字数だけ後方に移動します。行頭ならば前行の終端に位置します。

互換性：
   Emacsではバッファの先頭ではエラーが発生します。xyzzyではエラーは発生
  しません。その代わり、動けたときは t、動けなければ nil を返します。


■backward-delete-char-untabify
[Type       ]: Function
[Arguments  ]: backward-delete-char-untabify &optional (ARG 1)
[Package    ]: editor
[Seealso    ]: delete-backward-char
[File       ]: cmds.l
[Section    ]: テキスト
[Description]: 
カーソル後方の文字を指定文字数分だけ削除します。タブ文字を削除する際は、
適当な数の半角スペースに置き換えられてから削除されます。


■backward-delete-char-untabify-or-selection
[Type       ]: Function
[Arguments  ]: backward-delete-char-untabify-or-selection &optional (N 1)
[Package    ]: editor
[Seealso    ]: delete-backward-char
[File       ]: cmds.l
[Section    ]: テキスト
[Description]: 
セレクションで選択中ならばセレクション全体を、そうでなければカーソルの
後方の文字を指定文字数分だけ削除します。タブ文字を削除する際は、適当な
数の半角スペースに置き換えられてから削除されます。


■backward-kill-paragraph
[Type       ]: Function
[Arguments  ]: backward-kill-paragraph &optional (ARG 1)
[Package    ]: editor
[Seealso    ]: kill-paragraph , kill-region
[File       ]: paragrph.l
[Section    ]: リージョン
[Description]: 
現在のパラグラフの先頭までkillします。


■backward-kill-word
[Type       ]: Function
[Arguments  ]: backward-kill-word &optional (ARG 1)
[Package    ]: editor
[Seealso    ]: kill-word
[File       ]: cmds.l
[Section    ]: リージョン
[Description]: 
カーソル位置から後方の単語の先頭までを切り取り、キルリングに追加します。
[ESC C-h]
カーソルが単語の途中にある場合は、カーソル位置からその単語の先頭までが、
対象となります。


■backward-line
[Type       ]: Function
[Arguments  ]: backward-line &optional (N 1)
[Package    ]: editor
[Seealso    ]: forward-line
[File       ]: cmds.l
[Section    ]: ポジション
[Description]: 
N 行後方へ移動します。


■backward-paragraph
[Type       ]: Function
[Arguments  ]: backward-paragraph &optional (ARG 1)
[Package    ]: editor
[Seealso    ]: forward-paragraph
[File       ]: paragrph.l
[Section    ]: ポジション
[Description]: 
カーソルを段落の先頭に移動します。


■backward-sexp
[Type       ]: Function
[Arguments  ]: backward-sexp &optional (ARG 1) NOERROR
[Package    ]: editor
[Seealso    ]: forward-sexp
[File       ]: sexp.l
[Section    ]: バッファ
[Description]: 
lisp-modeでS式を1つ戻します。

使用例：
  (backward-sexp)


■backward-virtual-line
[Type       ]: Function
[Arguments  ]: backward-virtual-line &optional (N 1)
[Package    ]: editor
[Seealso    ]: forward-virtual-line
[File       ]: cmds.l
[Section    ]: ポジション
[Description]: 
表示行で N 行後方へ移動します。


■backward-word
[Type       ]: Function
[Arguments  ]: backward-word &optional (N 1)
[Package    ]: editor
[Seealso    ]: forward-word
[File       ]: cmds.l
[Section    ]: ポジション
[Description]: 
カーソルを後方の単語に移動します。


■base64-decode-region
[Type       ]: Function
[Arguments  ]: base64-decode-region FROM TO
[Package    ]: editor
[Seealso    ]: si:base64-encode , base64-decode-region-to-file
[File       ]: encdec.l
[Section    ]: リージョン
[Description]: 
リージョンをBase64デコードします。


■base64-decode-region-to-file
[Type       ]: Function
[Arguments  ]: base64-decode-region-to-file FILENAME FROM TO
[Package    ]: editor
[Seealso    ]: si:base64-decode , base64-decode-region
[File       ]: encdec.l
[Section    ]: リージョン
[Description]: 
リージョンをBase64デコードしてファイルに保存します。


■beginning-of-buffer
[Type       ]: Function
[Arguments  ]: beginning-of-buffer
[Package    ]: editor
[Seealso    ]: end-of-buffer , set-mark-command
[File       ]: cmds.l
[Section    ]: ポジション
[Description]: 
カーソルをバッファの先頭に移動します。[ESC <]
元あったカーソル位置にはマークを設定します。

マークを変更しないためには
(goto-char (point-min))を使います。


■beginning-of-defun
[Type       ]: Function
[Arguments  ]: beginning-of-defun &optional (ARG 1)
[Package    ]: editor
[File       ]: sexp.l
[Section    ]: 関数
[Description]: 
カーソルを関数定義の先頭に移動します。[ESC C-a]


■beginning-of-line
[Type       ]: Function
[Arguments  ]: beginning-of-line
[Package    ]: editor
[Seealso    ]: end-of-line
[File       ]: cmds.l
[Section    ]: ポジション
[Description]: 
行頭に移動します。goto-bolのinteractive版です。


■beginning-of-virtual-line
[Type       ]: Function
[Arguments  ]: beginning-of-virtual-line
[Package    ]: editor
[Seealso    ]: goto-virtual-bol
[File       ]: cmds.l
[Section    ]: ポジション
[Description]: 
表示行の行頭に移動します。
goto-virtual-bol の interactive 版です。


■block
[Type       ]: Special Form
[Arguments  ]: block NAME {FORM}*
[Package    ]: lisp
[Seealso    ]: return-from
[File       ]: builtin.l
[Section    ]: 制御構造
[Description]: 
フォームを順番に評価して最後のフォームの結果を返します。 
ほとんどprognですがreturn-fromやreturnで戻り値が指定できるところが違います。
returnやreturn-fromにぶつかったときには残りの式は評価しません。


■bobp
[Type       ]: Function
[Arguments  ]: bobp
[Package    ]: editor
[Seealso    ]: eobp
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
ポイントがバッファの先頭にあるか否かを返します。
  t    ポイントがバッファの先頭にある。
  nil  ポイントがバッファの先頭にはない。


■bolp
[Type       ]: Function
[Arguments  ]: bolp
[Package    ]: editor
[Seealso    ]: eolp
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
カーソルが行頭にあればt、そうでなければnilを返します。


■both-case-p
[Type       ]: Function
[Arguments  ]: both-case-p CHAR
[Package    ]: lisp
[Seealso    ]: lower-case-p , upper-case-p
[File       ]: builtin.l
[Section    ]: 文字
[Description]: 
CHAR が大文字小文字のある文字なら t 、そうでなければ nil を返します。

使用例：  
  (both-case-p #\a)
  => t
  (both-case-p #\A)
  => t
  (both-case-p #\RET)
  => nil


■boundp
[Type       ]: Function
[Arguments  ]: boundp SYMBOL
[Package    ]: lisp
[Seealso    ]: fboundp
[File       ]: builtin.l
[Section    ]: シンボル
[Description]: 
シンボルに値が設定されているかどうかを返します。

使用例：
  (boundp 'test)          => nil
  (defvar test "string")  => test
  (boundp 'test)          => t


■broadcast-stream-streams
[Type       ]: Function
[Arguments  ]: broadcast-stream-streams BROADCAST-STREAM
[Package    ]: lisp
[Seealso    ]: make-broadcast-stream
[File       ]: builtin.l
[Section    ]: 入出力
[Description]: 
make-broadcast-streamで作られたBROADCAST-STREAMの出力先のストリームのリ
ストを返します。

使用例：
  ;;; hogeの出力先をリストで得る。
  (with-open-stream (foo (open "foo.txt" :direction :output))
    (with-open-stream (bar (open "bar.txt" :direction :output))
      (with-open-stream (hoge (make-broadcast-stream foo bar))
        (broadcast-stream-streams hoge))))
  => (#<file-output stream: C:/applications/xyzzy/foo.txt>
      #<file-output stream: C:/applications/xyzzy/bar.txt>)


■BS と C-h に別々の機能を割り当てるには？
[Type       ]: Tips
[Seealso    ]: global-set-key
[Section    ]: キーマップ
[Description]: 
| (global-set-key #\C-h 'replace-dialog) という設定を行うと、
| BS Key を押下した場合も、ダイアログが出てきます。

伝統的な仕様ですが、

  (setf (svref *kbd-translate-table* (char-code #\C-h)) #\F13)
  (global-set-key #\F13 'replace-dialog)

このようにすれば逃げられなくもないです。


■buffer-can-redo-p
[Type       ]: Function
[Arguments  ]: buffer-can-redo-p BUFFER
[Package    ]: editor
[Seealso    ]: redo
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
バッファがredo可能な状態ならt、そうでなければnilを返します。


■buffer-can-undo-p
[Type       ]: Function
[Arguments  ]: buffer-can-undo-p BUFFER
[Package    ]: editor
[Seealso    ]: undo
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
bufferがundo可能ならt、そうでなければnilを返します。


■buffer-fileio-encoding
[Type       ]: Function
[Arguments  ]: buffer-fileio-encoding &optional BUFFER
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
バッファの漢字コードを返します。変更する場合には、
set-buffer-fileio-encodingを使用します。

使用例：
  (buffer-fileio-encoding)
  => #.(make-iso2022-encoding "jis" ... )

参照：
  kanji.l


■buffer-fold-width
[Type       ]: Function
[Arguments  ]: buffer-fold-width &optional BUFFER
[Package    ]: editor
[Seealso    ]: set-buffer-fold-width
[File       ]: builtin.l
[Section    ]: テキスト
[Description]: 
折り返しの状態を返します。

  BUFFER : 状態を取得するバッファ

戻り値は以下のとおりです。

  t    ウィンドウ幅で折り返す
  nil  折り返しをしない
  数値 その幅で折り返しをします。

多値で返ってきている t の意味は不明です。


■buffer-lines
[Type       ]: Function
[Arguments  ]: buffer-lines &optional BUFFER
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
バッファの物理行数を返します。

使用例：  
  (buffer-lines)
  => 5014


■buffer-list
[Type       ]: Function
[Arguments  ]: buffer-list &key :buffer-bar-order
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
全バッファをリストで返します。

使用例:
  (buffer-list)
  =>(#<buffer:  *Minibuf0*> #<buffer: *grep*> #<buffer: *scratch*> #<buffer: *untitled*> #<buffer: addref.xml> #<buffer: reference.xml>)
  
  (buffer-list :buffer-bar-order t)
  =>(#<buffer: *scratch*> #<buffer: reference.xml> #<buffer: *untitled*> #<buffer: addref.xml> #<buffer: *grep*> #<buffer:  *Minibuf0*>)
  
  ;;ミニバッファの名前はスペースで始まる点に注意
  (mapcar #'buffer-name (buffer-list))
  =>(" *Minibuf0*" "*grep*" "*scratch*" "*untitled*" "addref.xml" "reference.xml")


■buffer-local-value
[Type       ]: Function
[Arguments  ]: buffer-local-value BUFFER SYMBOL
[Package    ]: editor
[Seealso    ]: make-local-variable , defvar-local
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
指定されたバッファのローカル変数の値を返します。

  BUFFER : ローカルな値を取得したいバッファ
  SYMBOL : ローカル変数

使用例：
  (buffer-local-value (selected-buffer) 'mode-name)
  => "xmldoc"


■buffer-menu
[Type       ]: Function
[Arguments  ]: buffer-menu
[Package    ]: editor
[File       ]: buf-menu.l
[Section    ]: バッファ
[Description]: 
バッファ一覧を表示します。
一覧の中ではバッファの選択、削除などができます。


■buffer-mode
[Type       ]: BufferLocal
[Package    ]: editor
[Section    ]: バッファ
[Description]: 
カレントバッファのモードを格納しています。

使用例：
  ;;; list-interaction-modeの場合
  buffer-mode
  => lisp-interaction-mode


■buffer-modified-count
[Type       ]: Function
[Arguments  ]: buffer-modified-count &optional BUFFER
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
（バッファが修正されたカウント数？）


■buffer-modified-p
[Type       ]: Function
[Arguments  ]: buffer-modified-p &optional BUFFER
[Package    ]: editor
[Seealso    ]: set-buffer-modified-p , buffer-modified-count
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
バッファ BUFFER が変更を加えられているかどうかを返します。
バッファが変更されていない時は nil を、変更されている時はバッファの編集
回数(buffer-modified-count の値)を返します。
BUFFER が指定されない、もしくは nil が指定された時はカレントバッファの結
果を返します。


■buffer-name
[Type       ]: Function
[Arguments  ]: buffer-name BUFFER
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
バッファの名前を返します。

  BUFFER : 名前を返すバッファを指定します。

使用例：
  ;;; カレントバッファの名前を返します。
  (buffer-name (selected-buffer))
  => "reference.xml"


■buffer-process
[Type       ]: Function
[Arguments  ]: buffer-process BUFFER
[Package    ]: editor
[Seealso    ]: make-process
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
バッファに結び付けられているプロセスを返します。
プロセスはmake-processで作成します。


■buffer-read-only
[Type       ]: BufferLocal
[Package    ]: editor
[Section    ]: 変数と定数
[Description]: 
バッファが読み取り専用かどうかを管理します。

  t     バッファは読み取り専用
  nil   バッファは読み書き可能


■buffer-selector
[Type       ]: Function
[Arguments  ]: buffer-selector
[Package    ]: editor
[Seealso    ]: select-buffer
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
バッファ選択ウィンドウを表示します。
バッファ選択されればそのバッファを、そうでなければnilを返します。


■buffer-size
[Type       ]: Function
[Arguments  ]: buffer-size &optional BUFFER
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
バッファのサイズを返します。2バイト文字があるので buffer-size の返す値と
ファイルサイズは一致しません。

使用例：
  (buffer-size)
  => 200170


■buffer-stream-buffer
[Type       ]: Function
[Arguments  ]: buffer-stream-buffer STREAM
[Package    ]: editor
[Seealso    ]: make-buffer-stream , buffer-stream-point , xyzzyで提供されているストリームの種類
[File       ]: builtin.l
[Section    ]: 入出力
[Description]: 
buffer-streamであるストリームが関連付けられているバッファを返します。

  STREAM : buffer-streamであるストリームを指定します。


■buffer-stream-p
[Type       ]: Function
[Arguments  ]: buffer-stream-p STREAM
[Package    ]: editor
[Seealso    ]: xyzzyで提供されているストリームの種類
[File       ]: builtin.l
[Section    ]: 入出力
[Description]: 
ストリームがbuffer-streamかどうかを返します。

  STREAM : 判定するストリーム

  t   ストリームはbuffer-streamである。
  nil ストリームはbuffer-streamではない。


■buffer-stream-point
[Type       ]: Function
[Arguments  ]: buffer-stream-point STREAM
[Package    ]: editor
[Seealso    ]: buffer-stream-set-point , file-position , make-buffer-stream , xyzzyで提供されているストリームの種類
[File       ]: builtin.l
[Section    ]: 入出力
[Description]: 
buffer-streamであるストリームのポイントを返します。

  STREAM : buffer-streamであるストリームを指定します。


■buffer-stream-set-point
[Type       ]: Function
[Arguments  ]: buffer-stream-set-point STREAM POINT
[Package    ]: editor
[Seealso    ]: xyzzyで提供されているストリームの種類
[File       ]: builtin.l
[Section    ]: 入出力
[Description]: 
buffer-streamであるストリームのポイントを指定します。

  STREAM : buffer-streamであるストリームを指定します。
  POINT  : buffer-stream上の入出力のポイントを指定します。

参考：
  misc.lのwith-output-to-bufferとかwith-input-from-buffer


■buffer-substring
[Type       ]: Function
[Arguments  ]: buffer-substring FROM TO
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: 文字列
[Description]: 
バッファの指定された範囲の文字列を返します。


■bufferp
[Type       ]: Function
[Arguments  ]: bufferp OBJECT
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
OBJECTがバッファならばt、そうでないならnilを返します。


■bury-buffer
[Type       ]: Function
[Arguments  ]: bury-buffer &optional BUFFER
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
（詳細不明）
--- muleの説明 ---
この関数は、リスト上の他のバッファの順を変更することなく、バッファリスト
の終りに buffer-name を置きます。それは、other-buffer が(最も)返さないバ
ッファになります。 buffer-name が与えられない場合、デフォルトはカレント
バッファになります。 

buffer-name がカレントバッファの場合、それが selected ウィンドウで表示さ
れている場合、 other-buffer で選択されるバッファで置き換えます。 selected 
ウィンドウ以外のウィンドウで表示されている場合、それはそのままにします。 

インタラクティブに呼ばれた場合、 buffer-name はデフォルトでカレントバッ
ファになります。


■butlast
[Type       ]: Function
[Arguments  ]: butlast LIST &optional (N 1)
[Package    ]: lisp
[Seealso    ]: nbutlast , last
[File       ]: list.l
[Section    ]: リスト
[Description]: 
リストの最後のN要素分を除いたリストを返します。元のリストは変更されません。

使用例：
  ;;; 最後の要素を取り除く。
  (butlast '(1 2 3))
  => (1 2) 
  ;;; 最後の2要素を取り除く。
  (butlast '(1 2 3) 2)
  => (1)


■C-z でアイコン化させるには？
[Type       ]: Tips
[Section    ]: その他
[Description]: 
(require "wip/winapi")
(c:define-dll-entry winapi:BOOL ShowWindow (winapi:HWND c:int) "user32")

(global-set-key #\C-z #'(lambda () (interactive)
                          (ShowWindow (get-window-handle) 6)))


■caaaar
[Type       ]: Function
[Arguments  ]: caaaar X
[Package    ]: lisp
[Seealso    ]: car
[File       ]: list.l
[Section    ]: リスト
[Description]: 
caaaar を返します。

  (caaaar X) = (car (car (car (car X))))


■caaadr
[Type       ]: Function
[Arguments  ]: caaadr X
[Package    ]: lisp
[Seealso    ]: car , cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
caaadr を返します。

  (caaadr X) = (car (car (car (cdr X))))


■caaar
[Type       ]: Function
[Arguments  ]: caaar X
[Package    ]: lisp
[Seealso    ]: car
[File       ]: list.l
[Section    ]: リスト
[Description]: 
caaar を返します。

  (caaar X) = (car (car (car X)))


■caadar
[Type       ]: Function
[Arguments  ]: caadar X
[Package    ]: lisp
[Seealso    ]: car , cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
caadar を返します。

  (caadar X) = (car (car (cdr (car X))))


■caaddr
[Type       ]: Function
[Arguments  ]: caaddr X
[Package    ]: lisp
[Seealso    ]: car , cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
caaddr を返します。

  (caaddr X) = (car (car (cdr (cdr X))))


■caadr
[Type       ]: Function
[Arguments  ]: caadr X
[Package    ]: lisp
[Seealso    ]: car , cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
caadr を返します。

  (caadr X) = (car (car (cdr X)))


■caar
[Type       ]: Function
[Arguments  ]: caar X
[Package    ]: lisp
[Seealso    ]: car
[File       ]: list.l
[Section    ]: リスト
[Description]: 
caar を返します。

  (caar X) = (car (car X))


■cadaar
[Type       ]: Function
[Arguments  ]: cadaar X
[Package    ]: lisp
[Seealso    ]: car , cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
cadaar を返します。

  (cadaar X) = (car (cdr (car (car X))))


■cadadr
[Type       ]: Function
[Arguments  ]: cadadr X
[Package    ]: lisp
[Seealso    ]: car , cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
cadadr を返します。

  (cadadr X) = (car (cdr (car (cdr X))))


■cadar
[Type       ]: Function
[Arguments  ]: cadar X
[Package    ]: lisp
[Seealso    ]: car , cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
cadar を返します。

  (cadar X) = (car (cdr (car X)))


■caddar
[Type       ]: Function
[Arguments  ]: caddar X
[Package    ]: lisp
[Seealso    ]: car , cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
caddar を返します。

  (caddar X) = (car (cdr (cdr (car X))))


■cadddr
[Type       ]: Function
[Arguments  ]: cadddr X
[Package    ]: lisp
[Seealso    ]: car , cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
cadddr を返します。

  (cadddr X) = (car (cdr (cdr (cdr X))))


■caddr
[Type       ]: Function
[Arguments  ]: caddr X
[Package    ]: lisp
[Seealso    ]: car , cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
caddr を返します。

  (caddr X) = (car (cdr (cdr X)))


■cadr
[Type       ]: Function
[Arguments  ]: cadr X
[Package    ]: lisp
[Seealso    ]: car , cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
cadr を返します。

  (cadr X) = (car (cdr X))


■calendar
[Type       ]: Function
[Arguments  ]: calendar &optional YEAR
[Package    ]: editor
[File       ]: calendar.l
[Section    ]: 日付・時間
[Description]: 
YEARにより指定された年のカレンダーを表示します。当日には下線が、
祝祭日には色が付いています。マウスをこれらの上に移動すると、休日
の内容がポップアップ表示されます。


■call-arguments-limit
[Type       ]: Variable
[Package    ]: lisp
[Seealso    ]: lambda-parameters-limit
[Section    ]: 変数と定数
[Description]: 
関数に与えることのできる引数の個数の限界値

参照例： 
  call-arguments-limit
  => 536870911


■call-interactively
[Type       ]: Function
[Arguments  ]: call-interactively COMMAND &optional HOOK
[Package    ]: editor
[File       ]: misc.l
[Section    ]: 評価
[Description]: 
指定された関数をinteractiveに呼び出したかのごとく実行します。

  COMMAND : interactiveに呼び出す関数を指定します。
            (interactive ...)として宣言された関数でなければなりません。

使用例：
  ;;; find-fileを無引数で呼び出してもエラーになる。
  (find-file)
  => 引数が少なすぎます: (find-file)

  ;;; interactiveに呼び出すと大丈夫
  (call-interactively 'find-file)
  => Find file: C:/applications/xyzzy/


■call-last-kbd-macro
[Type       ]: Function
[Arguments  ]: call-last-kbd-macro &optional (ARG 1)
[Package    ]: editor
[Seealso    ]: command-execute
[File       ]: kbdmacro.l
[Section    ]: マクロ
[Description]: 
start-kbd-macro/end-kbd-macroで登録したキーボードマクロを実行します。
[ツール(T)]-[キーボードマクロおまけ(O)]-[保存]したキーボードマクロは、
[ツール(T)]-[キーボードマクロおまけ(O)]-[読み込み]で後から選択することが可能です。


■call-process
[Type       ]: Function
[Arguments  ]: call-process COMMAND-LINE &key :environ :no-std-handles :input :output :error :exec-directory :show :wait
[Package    ]: editor
[Seealso    ]: execute-shell-command , make-process
[File       ]: builtin.l
[Section    ]: プロセス
[Description]: 
外部プログラムを実行します。完全にxyzzyの外部でプログラムを実行します。

  COMMAND-LINE    : 実行するコマンドをオプション付で指定します。
  :environ        : 設定する環境変数を連想リスト形式で渡します。
                    (("HOME" . "C:/applications/xyzzy/")
                     ("TOPDIR" . "C:/spool/"))
  :no-std-handles : （詳細不明）
  :input          : 標準入力を使用する外部プログラムであれば入力ファイル名
                    を指定します。
  :output         : 標準出力を使用する外部プログラムであれば出力ファイル名
                    を指定します。
  :error          : （詳細不明）
  :exec-directory : 実行するディレクトリを指定します。
  :show           : 外部プログラムの実行時の表示を指定します。
                    :show      通常のウィンドウ
                    :no-active 非アクティブ
                    :minimize  最小化
                    :maximize  最大化
                    :hide      非表示
                    上記以外   通常のウィンドウ
  :wait           : 外部プログラムが終了するのを待ち合わせます。

実行したプロセスを取得したいときは make-process を使います．

使用例：
  ;;; notepad.exeの終了を待ち合わせてみる。
  (call-process "notepad" :wait t)


■capitalize-region
[Type       ]: Function
[Arguments  ]: capitalize-region FROM TO
[Package    ]: editor
[Seealso    ]: downcase-region , upcase-region
[File       ]: builtin.l
[Section    ]: リージョン
[Description]: 
リージョン内の単語をcapitalizeします。
つまり、単語の先頭を大文字に、それ以外を小文字にします。


■capitalize-word
[Type       ]: Function
[Arguments  ]: capitalize-word &optional (ARG 1)
[Package    ]: editor
[Seealso    ]: capitalize-region , forward-word
[File       ]: cmds.l
[Section    ]: 文字列
[Description]: 
前方の単語の先頭の文字を大文字に、それ以外の文字を小文字に変換します。
[ESC c]
カーソルが単語の途中にある場合は、カーソル位置の文字を大文字に、それ以
降の文字を小文字に変換します。


■car
[Type       ]: Function
[Arguments  ]: car LIST
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: リスト
[Description]: 
リストの最初の要素を返します。

コンスセル LIST の最初のポインタを返します。 LIST が nil の場合 car は 
nil を返すよう、定義されています。引数がリストでない場合、エラーになります
引数がリスト以外でもエラーになって欲しくない場合には、safe-car を使用します。

使用例：
  (car '(a b c))
  => a
  (car '())
  => nil
  (car "string")
  => 不正なデータ型です: "string": cons


■case
[Type       ]: Macro
[Arguments  ]: case KEYFORM &rest FORMS
[Package    ]: lisp
[File       ]: evalmacs.l
[Section    ]: 制御構造
[Description]: 
C言語のswitch文みたいなのです。

(case <キー>
  (<リスト1> <式>〜<式>)
  (<リスト2> <式>〜<式>)
       ...
  (<リストn> <式>〜<式>))

まず<キー>を評価し，それが<リスト>のどれかの要素と一致すれば，
その<リスト>に続く式を順に評価して，最後の式の値をcaseの値として返
す。どの<リスト>のどの要素にも一致しなければcaseの値はnilである。
ただし例外として，最後のリスト(<リストn>)がtであれば，「どれにも一
致しなければ」を意味する。

<リスト1>〜<リストn>までは，それぞれデータのリストで，これら
は評価されない。すなわち値がリストになる式ではなく，リストそのものがここ
に入る。要素が一つだけの場合は，リストの代わりに要素がここにきてもいい。

使用例：
  ;;; 4を入力して場合分けさせる
  (setq x 4)
  => 4
  (case x
    (1 'one)
    (2 'two)
    (3 'three)
    ((4 5) 'four_or_five)
    (t 'large))
  => four_or_five


■catch
[Type       ]: Special Form
[Arguments  ]: catch TAG {FORM}*
[Package    ]: lisp
[Seealso    ]: throw
[File       ]: builtin.l
[Section    ]: 制御構造
[Description]: 
throwを投げるためのラベルを設定します。
C++のtryに相当します。

  C++  : try    throw
  Lisp : catch  throw

参考：
  エラー処理関連


■cd
[Type       ]: Function
[Arguments  ]: cd DIRECTORY
[Package    ]: editor
[Seealso    ]: set-default-directory
[File       ]: misc.l
[Section    ]: ファイルシステム
[Description]: 
バッファが作業しているディレクトリをインタラクティブに変更します。


■cdaaar
[Type       ]: Function
[Arguments  ]: cdaaar X
[Package    ]: lisp
[Seealso    ]: car , cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
cdaaar を返します。

  (cdaaar X) = (cdr (car (car (car X))))


■cdaadr
[Type       ]: Function
[Arguments  ]: cdaadr X
[Package    ]: lisp
[Seealso    ]: car , cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
cdaadr を返します。

  (cdaadr X) = (cdr (car (car (cdr X))))


■cdaar
[Type       ]: Function
[Arguments  ]: cdaar X
[Package    ]: lisp
[Seealso    ]: car , cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
cdaar を返します。

  (cdaar X) = (cdr (car (car X)))


■cdadar
[Type       ]: Function
[Arguments  ]: cdadar X
[Package    ]: lisp
[Seealso    ]: car , cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
cdadar を返します。

  (cdadar X) = (cdr (car (cdr (car X))))


■cdaddr
[Type       ]: Function
[Arguments  ]: cdaddr X
[Package    ]: lisp
[Seealso    ]: car , cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
cdaddr を返します。

  (cdaddr X) = (cdr (car (cdr (cdr X))))


■cdadr
[Type       ]: Function
[Arguments  ]: cdadr X
[Package    ]: lisp
[Seealso    ]: car , cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
cdadr を返します。

  (cdadr X) = (cdr (car (cdr X)))


■cdar
[Type       ]: Function
[Arguments  ]: cdar X
[Package    ]: lisp
[Seealso    ]: car , cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
cdar を返します。

  (cdar X) = (cdr (car X))


■cddaar
[Type       ]: Function
[Arguments  ]: cddaar X
[Package    ]: lisp
[Seealso    ]: car , cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
cddaar を返します。

  (cddaar X) = (cdr (cdr (car (car X))))


■cddadr
[Type       ]: Function
[Arguments  ]: cddadr X
[Package    ]: lisp
[Seealso    ]: car , cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
cddadr を返します。

  (cddadr X) = (cdr (cdr (car (cdr X))))


■cddar
[Type       ]: Function
[Arguments  ]: cddar X
[Package    ]: lisp
[Seealso    ]: car , cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
cddar を返します。

  (cddar X) = (cdr (cdr (car X)))


■cdddar
[Type       ]: Function
[Arguments  ]: cdddar X
[Package    ]: lisp
[Seealso    ]: car , cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
cdddar を返します。

  (cdddar X) = (cdr (cdr (cdr (car X))))


■cddddr
[Type       ]: Function
[Arguments  ]: cddddr X
[Package    ]: lisp
[Seealso    ]: cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
cddddr を返します。

  (cddddr X) = (cdr (cdr (cdr (cdr X))))


■cdddr
[Type       ]: Function
[Arguments  ]: cdddr X
[Package    ]: lisp
[Seealso    ]: cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
cdddr を返します。

  (cdddr X) = (cdr (cdr (cdr X)))


■cddr
[Type       ]: Function
[Arguments  ]: cddr X
[Package    ]: lisp
[Seealso    ]: cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
cddr を返します。

  (cddr X) = (cdr (cdr X))


■cdr
[Type       ]: Function
[Arguments  ]: cdr LIST
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: リスト
[Description]: 
リストの二番目以降をリストで返します。

コンスセル LIST の 2 番目のポインタを返します。 LIST が nil の場合 cdr 
は nil を返すよう、定義されています。引数がリストでない場合、エラーにな
ります。引数がリスト以外でもエラーになって欲しくない場合には、safe-cdrを
使用します。

使用例：
  (cdr '(a b c))
  => (b c)
  (cdr '())
  => nil
  (cdr "string")
  => 不正なデータ型です: "string": cons


■ceiling
[Type       ]: Function
[Arguments  ]: NUMBER &optional DIVISOR
[Package    ]: lisp
[Seealso    ]: floor , truncate , round
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
NUMBERを正の無限大方向に丸めます。
DIVISORを省略した場合にはNUMBER以上の最小の整数になります。

使用例：  
  (ceiling 2.2)
  => 3
  (ceiling 2.8)
  => 3
  (ceiling -2.2)
  => -2  
  (multiple-value-list (ceiling 2.2))
  => (3 -0.8)


■char
[Type       ]: Function
[Arguments  ]: char STRING INDEX
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 文字列
[Description]: 
STRINGのINDEX番目の文字を返します。
INDEXは0を基底とします。

使用例：
  ;;; 先頭から最後まで取得する。
  (char "foo" -1) => 範囲外の値です: -1
  (char "foo" 0)  => #\f
  (char "foo" 1)  => #\o
  (char "foo" 2)  => #\o
  (char "foo" 3)  => 範囲外の値です: 3


■char-after
[Type       ]: Function
[Arguments  ]: char-after POINT &optional NOT-USED
[Package    ]: editor
[Seealso    ]: char-before
[File       ]: builtin.l
[Section    ]: 文字
[Description]: 
カレントバッファの POINT 位置の文字を返します。
(point-min)以下の値が指定された場合(point-min)の文字を返す。
(point-max)以上の値が指定された場合 #\NUL を返す。

  POINT    : INTEGER か MARKER でポイントを指定
  NOT-USED : 不使用

戻り値：
  文字

使用例：
  ;;; ポイント c の位置で ESC ESC (char-after (point)) した場合
  abcdefg
    ^ このポイントで ESC ESC (char-after (point)) => #\c


■char-before
[Type       ]: Function
[Arguments  ]: char-before POINT &optional NOT-USED
[Package    ]: editor
[Seealso    ]: char-after
[File       ]: builtin.l
[Section    ]: 文字
[Description]: 
カレントバッファの POINT の前の位置の文字を返します。
(point-max)以上の値が指定された場合(point-max)の前の位置の文字を返す。
(point-min)以下の値が指定された場合 #\NUL を返す。

  POINT    : INTEGER か MARKER でポイントを指定
  NOT-USED : 不使用

戻り値:
  文字

使用例：
  ;;; ポイント c の位置で ESC ESC (char-before (point)) した場合
  abcdefg
    ^ このポイントで ESC ESC (char-before (point)) => #\b


■char-code
[Type       ]: Function
[Arguments  ]: char-code CHAR
[Package    ]: lisp
[Seealso    ]: code-char
[File       ]: builtin.l
[Section    ]: 文字
[Description]: 
CHAR の文字コードを返します。
文字コードとキャラクタの間の相互変換には、code-charを使います。

使用例：
  (char-code #\a)
  => 97
  (code-char (char-code #\a))
  => #\a


■char-code-limit
[Type       ]: Variable
[Package    ]: lisp
[Seealso    ]: *character-name-hash-table* , make-character-name-hash-table
[Section    ]: 変数と定数
[Description]: 
文字コードの限界値を定めている定数(65536)です。
*character-name-hash-table* を設定する
(make-character-name-hash-table) 関数の定義中でのみ使用されています。
xyzzy ソース内で定義されています。


■char-columns
[Type       ]: Function
[Arguments  ]: char-columns CHAR
[Package    ]: editor
[Seealso    ]: *unicode-to-half-width*
[File       ]: builtin.l
[Section    ]: 文字
[Description]: 
文字 CHAR の文字幅を返します。

使用例：
  (char-columns #\a)        => 1
  (char-columns #\あ)       => 2
  (char-columns #\asterisk) => 1
  ;;; UNICODE 半角表示時
  (setq *unicode-to-half-width* t)   => t
  (char-columns (unicode-char 180))  => 1
  ;;; UNICODE 全角表示時
  (setq *unicode-to-half-width* nil) => nil
  (char-columns (unicode-char 180))  => 2


■char-downcase
[Type       ]: Function
[Arguments  ]: char-downcase CHAR
[Package    ]: lisp
[Seealso    ]: char-upcase
[File       ]: builtin.l
[Section    ]: 文字
[Description]: 
CHARを小文字にして返します。

使用例：  
  (char-downcase #\A)
  => #\a


■char-equal
[Type       ]: Function
[Arguments  ]: char-equal CHARACTER &rest MORE-CHARACTERS
[Package    ]: lisp
[Seealso    ]: char=
[File       ]: builtin.l
[Section    ]: 文字
[Description]: 
引数がすべて大文字小文字関係なく等しければt、そうでなければnilを返します。

使用例：  
  (char-equal #\A #\a)
  => t


■char-greaterp
[Type       ]: Function
[Arguments  ]: char-greaterp CHARACTER &rest MORE-CHARACTERS
[Package    ]: lisp
[Seealso    ]: char>
[File       ]: builtin.l
[Section    ]: 文字
[Description]: 
引数の文字が全て大文字小文字関係なく降順ならt、そうでなければnilを返します。

使用例：
  (char-greaterp #\c #\b #\a)
  => t
  (char-greaterp #\c #\b #\b)
  => nil
  (char-greaterp #\b #\A)
  => t
  (char-greaterp #\B #\a)
  => t


■char-lessp
[Type       ]: Function
[Arguments  ]: char-lessp CHARACTER &rest MORE-CHARACTERS
[Package    ]: lisp
[Seealso    ]: char<
[File       ]: builtin.l
[Section    ]: 文字
[Description]: 
引数の文字が全て大文字小文字関係なく昇順ならt、そうでなければnilを返します。

使用例：  
  (char-lessp #\a #\b #\c)
  => t
  (char-lessp #\a #\b #\b)
  => nil
  (char-lessp #\A #\b)
  => t
  (char-lessp #\a #\B)
  => t


■char-name
[Type       ]: Function
[Arguments  ]: char-name C
[Package    ]: editor
[File       ]: misc.l
[Section    ]: 文字
[Description]: 
文字の英字名称を返します。
この英字名称はどこで定義されたものなのでしょうか？

使用例：
  ;;; いろいろと英字名称を見てみる。
  (char-name #\x00)     => "null"
  (char-name #\x0a)     => "line_feed"
  (char-name #\x0d)     => "carriage_return"
  (char-name #\a)       => "latin_small_letter_a"
  (char-name #\が)      => "hiragana_letter_ga"
  (char-name #\ヲ)      => "katakana_letter_wo"
  (char-name #\漢)      => nil


■char-not-equal
[Type       ]: Function
[Arguments  ]: char-not-equal CHARACTER &rest MORE-CHARACTERS
[Package    ]: lisp
[Seealso    ]: char/=
[File       ]: builtin.l
[Section    ]: 文字
[Description]: 
引数がすべて大文字小文字関係なく等しくなければt、そうでなければnilを返します。

使用例：
  (char-not-equal #\a #\b #\c)
  => t
  (char-not-equal #\a #\A)
  => nil


■char-not-greaterp
[Type       ]: Function
[Arguments  ]: char-not-greaterp CHARACTER &rest MORE-CHARACTERS
[Package    ]: lisp
[Seealso    ]: char<=
[File       ]: builtin.l
[Section    ]: 文字
[Description]: 
引数の文字が全て大文字小文字関係なく昇順か等しければt、そうでなければnil
を返します。

使用例：  
  (char-not-greaterp #\a #\B #\c)
  => t


■char-not-lessp
[Type       ]: Function
[Arguments  ]: char-not-lessp CHARACTER &rest MORE-CHARACTERS
[Package    ]: lisp
[Seealso    ]: char>=
[File       ]: builtin.l
[Section    ]: 文字
[Description]: 
引数の文字が全て大文字小文字関係なく降順か等しければt、そうでなければnil
を返します。

使用例：  
  (char-not-lessp #\c #\B #\a)
  => t


■char-unicode
[Type       ]: Function
[Arguments  ]: char-unicode CHAR
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: 文字
[Description]: 
文字のUNICODEのコード値を返します。

使用例：
  ;;; UNICODEのコード値を取得してみる。
  (char-unicode #\x00)  => 0
  (char-unicode #\a)    => 97
  (char-unicode #\漢)   => 28450


■char-upcase
[Type       ]: Function
[Arguments  ]: char-upcase CHAR
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 文字
[Description]: 
CHARを大文字にして返します。

使用例：  
  (char-upcase #\x)
  => #\X


■char/=
[Type       ]: Function
[Arguments  ]: char/= CHARACTER &rest MORE-CHARACTERS
[Package    ]: lisp
[Seealso    ]: char-not-equal
[File       ]: builtin.l
[Section    ]: 文字
[Description]: 
引数の文字が全て等しくなければt、そうでなければnilを返します。

使用例：  
  (char/= #\a #\b #\c)
  => t
  (char/= #\a #\b #\a)
  => nil
  (char/= #\a #\A)
  => t


■char<
[Type       ]: Function
[Arguments  ]: char< CHARACTER &rest MORE-CHARACTERS
[Package    ]: lisp
[Seealso    ]: char-lessp
[File       ]: builtin.l
[Section    ]: 文字
[Description]: 
引数の文字が全て昇順ならt、そうでなければnilを返します。

使用例：  
  (char< #\a #\b #\c)
  => t
  (char< #\a #\b #\b)
  => nil
  (char< #\A #\b)
  => t
  (char< #\a #\B)
  => nil


■char<=
[Type       ]: Function
[Arguments  ]: char<= CHARACTER &rest MORE-CHARACTERS
[Package    ]: lisp
[Seealso    ]: char-not-greaterp
[File       ]: builtin.l
[Section    ]: 文字
[Description]: 
隣り合った引数の関係がすべて昇順か等しければt、そうでなければnilを返します。

使用例：  
  (char<= #\a #\b #\b #\c)
  => t
  (char<= #\a #\b #\c #\b)
  => nil


■char=
[Type       ]: Function
[Arguments  ]: char= CHARACTER &rest MORE-CHARACTERS
[Package    ]: lisp
[Seealso    ]: char-equal
[File       ]: builtin.l
[Section    ]: 文字
[Description]: 
引数の文字がすべて等しければt、そうでなければnilを返します。

使用例：  
  (char= #\a #\a #\a)
  => t
  (char= #\a #\d)
  => nil
  (char= #\a #\A)
  => nil

参考：
  case-sensitive        case-insensitive
  ----                  ----
  char=                 char-equal
  char/=                char-not-equal
  char<                 char-lessp
  char>                 char-greaterp
  char<=                char-not-greaterp
  char>=                char-not-lessp


■char>
[Type       ]: Function
[Arguments  ]: char> CHARACTER &rest MORE-CHARACTERS
[Package    ]: lisp
[Seealso    ]: char-greaterp
[File       ]: builtin.l
[Section    ]: 文字
[Description]: 
引数の文字が全て降順ならt、そうでなければnilを返します。

使用例：  
  (char> #\c #\b #\a)
  => t
  (char> #\c #\b #\d)
  => nil
  (char> #\b #\A)
  => t
  (char> #\a #\B)
  => t


■char>=
[Type       ]: Function
[Arguments  ]: char>= CHARACTER &rest MORE-CHARACTERS
[Package    ]: lisp
[Seealso    ]: char-not-lessp
[File       ]: builtin.l
[Section    ]: 文字
[Description]: 
隣り合った引数の関係がすべて降順か等しければt、そうでなければnilを返します。

使用例：  
  (char>= #\c #\b #\b #\a)
  => t
  (char>= #\c #\b #\d)
  => nil


■character
[Type       ]: Function
[Arguments  ]: character OBJECT
[Package    ]: lisp
[Seealso    ]: coerce
[File       ]: builtin.l
[Section    ]: 文字
[Description]: 
OBJECTを可能ならばcharacterに変換して返します。

  (character 'x) == (coerce 'x 'character)

使用例：
  (character 'x)        => #\x
  (character "A")       => #\A
  (character "1")       => #\1
  (character "10")      => 文字への変換はサポートされていません: "10"


■characterp
[Type       ]: Function
[Arguments  ]: characterp OBJECT
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
OBJECT が character なら t 、それ以外なら nil を返します。


■check-type
[Type       ]: Macro
[Arguments  ]: check-type PLACE TYPESPEC &optional STRING
[Package    ]: lisp
[File       ]: condition.l
[Section    ]: データ型
[Description]: 
（詳細不明）

使用例：
  ;;; nの型チェックをしてみる。
  (check-type n integer)


■check-valid-pathname
[Type       ]: Function
[Arguments  ]: check-valid-pathname PATHNAME
[Package    ]: lisp
[Seealso    ]: file-exist-p , valid-path-p
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
PATHNAMEが存在すればt、そうでなければnilを返します。

使用例：
  ;;; 存在するC:/xyzzy/と存在しないC:/xyzzzy/を比べてみる。
  (check-valid-pathname "C:/xyzzy/")
  => t
  (check-valid-pathname "C:/xyzzzy/")
  => nil


■cis
[Type       ]: Function
[Arguments  ]: cis Z
[Package    ]: lisp
[File       ]: number.l
[Section    ]: 数値
[Description]: 
偏角が Z で絶対値が 1 の複素数を返します。

  (cis Z) == (complex (cos Z) (sin Z))


■clear-all-text-attributes
[Type       ]: Function
[Arguments  ]: clear-all-text-attributes
[Package    ]: editor
[Seealso    ]: delete-text-attributes
[File       ]: builtin.l
[Section    ]: テキスト
[Description]: 
set-text-attributeで設定した属性を全部消します


■clear-all-text-colors
[Type       ]: Function
[Arguments  ]: clear-all-text-colors
[Package    ]: editor
[Seealso    ]: delete-text-attributes
[File       ]: cmds.l
[Section    ]: テキスト
[Description]: 
set-text-color で付けた属性を消します。

補足:
  この関数は Version 0.0.0.92 にて set-text-color とともに obsolete と
  なりました。


■clear-input
[Type       ]: Function
[Arguments  ]: clear-input &optional INPUT-STREAM
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 入出力
[Description]: 
入力ストリームにバッファリングされている入力をクリアします。


■clear-message
[Type       ]: Function
[Arguments  ]: clear-message
[Package    ]: editor
[Seealso    ]: message
[File       ]: misc.l
[Section    ]: 入出力
[Description]: 
ステータスバーのメッセージを消去します。


■clear-minibuffer-message
[Type       ]: Function
[Arguments  ]: clear-minibuffer-message
[Package    ]: editor
[Seealso    ]: minibuffer-message , minibuffer-prompt
[File       ]: misc.l
[Section    ]: ミニバッファ
[Description]: 
ミニバッファに表示された文字列を消去します。


■clear-rectangle
[Type       ]: Function
[Arguments  ]: clear-rectangle P1 P2
[Package    ]: editor
[Seealso    ]: open-rectangle , clear-rectangle-selection , operate-on-rectangle
[File       ]: rectangl.l
[Section    ]: リージョン
[Description]: 
P1 と P2 で指定される矩形領域を #\SPC で上書きします。


■clear-rectangle-selection
[Type       ]: Function
[Arguments  ]: clear-rectangle-selection
[Package    ]: editor
[Seealso    ]: open-rectangle-selection , clear-rectangle , operate-on-rectangle-selection
[File       ]: select.l
[Section    ]: リージョン
[Description]: 
矩形選択されたセレクションの領域を #\SPC で上書きします。


■clear-reverse-region
[Type       ]: Function
[Arguments  ]: clear-reverse-region
[Package    ]: editor
[Seealso    ]: reverse-region
[File       ]: builtin.l
[Section    ]: リージョン
[Description]: 
reverse-regionで反転表示した部分を元に戻します。


■clear-undo-boundary
[Type       ]: Function
[Arguments  ]: clear-undo-boundary &optional BUFFER
[Package    ]: editor
[Seealso    ]: undo , undo-boundary , kept-undo-information
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
UNDO情報から直近の境界を削除します。

使用例：
  (defun self-insert-space (&optional (arg 1))
    (interactive "*")
    (when (eq *last-command* 'self-insert-space)
      (clear-undo-boundary))
    (self-insert-command arg))
  (define-key ed::*lisp-mode-map* #\SPC 'self-insert-space)


■close
[Type       ]: Function
[Arguments  ]: close STREAM &key :abort
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 入出力
[Description]: 
指定されたストリームをクローズします。

  STREAM : クローズするストリームを指定します。
  :abort : 異常終了時に指定します。
        t       ストリームに対する副作用を取り消そうとします。
        nil     ストリーム普通に終了します。


■clrhash
[Type       ]: Function
[Arguments  ]: clrhash HASH-TABLE
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: ハッシュ
[Description]: 
ハッシュテーブルの全要素を削除します。

  HASH-TABLE : ハッシュテーブルを指定します。


■code-char
[Type       ]: Function
[Arguments  ]: code-char CODE
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 文字
[Description]: 
文字コードがCODEの文字を返します。
キャラクタと文字コードとの間の相互変換には、char-codeを使います。

使用例：  
  (code-char 110)
  => #\n


■coerce
[Type       ]: Function
[Arguments  ]: coerce OBJECT TYPE
[Package    ]: lisp
[Seealso    ]: type-of
[File       ]: typespec.l
[Section    ]: データ型
[Description]: 
OBJECT を TYPE 型に変換します。

TYPE はシンボルまたはリストで、それぞれ以下の型に変換されます。
  'list         ──→ リスト
  'array        ─┬→ 配列
  'simple-array ─┘
  'character    ──→ 文字
  'float        ─┬→ 単精度浮動小数点数
  'short-float  ─┤
  'single-float ─┘
  'double-float ─┬→ 倍精度浮動小数点数
  'long-float   ─┘
  'complex      ──→ 複素数
  'function     ──→ 関数
リストの場合、その最初の要素で型が決まります。
2番目以降の要素は、最初の要素が array、simple-array、complex の場合のみ
意味を持ち、それぞれ以下のように動作します。
  '(array ...)        ─┬→ make-sequence の TYPE と同じ
  '(simple-array ...) ─┘
  '(complex ...)      ──→ 実部、虚部を二番目の要素の型に変換
  
使用例:
  (coerce "abc" 'list)                         ; 文字列を文字のリストに
  => (#\a #\b #\c)
  (coerce #(1 2 3) 'list)                      ; 配列をリストに
  => (1 2 3)
  (coerce '(a b c) '(array t 1))               ; リストを配列に
  => #(a b c)
  (coerce "abc" '(array t 1))                  ; 文字列を文字の配列に
  => #(#\a #\b #\c)
  (coerce '(#\a #\b #\c) '(array character 1)) ; 文字のリストを文字列に
  => "abc"
  (coerce "abc" '(array character 1))          ; 意味なし
  => "abc"

  (coerce "a" 'character)                      ; 文字列を文字に
  => #\a
  
  (coerce 1 'float)
  => 1.0
  (coerce 1 'double-float)
  => 1.0d0
  (coerce 1.0 'complex)
  => #C(1.0 0.0)
  (coerce #C(1 2) '(complex float))            ; 単精度の複素数に
  => #C(1.0 2.0)
  
  (coerce 'let 'function)                      ; シンボル名の関数を返す
  => #<function: let>
  (coerce '(lambda (x) (* x 2)) 'function)     ; 関数を作ることも
  => #<lexical-closure: (anonymous)>
  (funcall (coerce '(lambda (x) (* x 2)) 'function) 12)
  => 24


■command-apropos
[Type       ]: Function
[Arguments  ]: command-apropos STRING
[Package    ]: editor
[Seealso    ]: apropos
[File       ]: help.l
[Section    ]: シンボル
[Description]: 
指定した正規表現に一致する interactive 宣言されている関数の一覧を表示し
ます。バインドされたキーがあれば、同時に表示します。


■command-execute
[Type       ]: Function
[Arguments  ]: command-execute COMMAND &optional HOOK
[Package    ]: editor
[Seealso    ]: interactive , execute-extended-command , call-last-kbd-macro , *prefix-args*
[File       ]: builtin.l
[Section    ]: 評価
[Description]: 
エディタのコマンドを実行します。
 
  COMMAND  : 文字列の場合，COMMAND をキーボードマクロとして実行します。
             シンボルの場合，COMMAND を interactive に実行します。
  HOOK     : COMMANDがシンボルの場合のみ使われます。
             HOOK には，2引数関数を指定し，第1引数はシンボル名，
             第2引数にはプレフィックスアーギュメントがある場合は 
             (list *prefix-value*) が，ない時は nil が入ります。
             コマンドを実行後，HOOKが実行されます。
             これ以上の詳細は不明です。

使用例：
  ;;; (command-execute "^X^F")と書いてfind-fileを実行してみます。
  (command-execute "^X^F")
 
  ;;; interactiveなコマンドを実行してみます。
  (command-execute 'next-line)

  ;;; interactiveでないコマンドを実行してみます。
  (command-execute 'goto-bol)
  =>不正なコマンドです: goto-bol

  ;;; HOOKを使ってみます。 
  (command-execute 'next-line #'(lambda (x y) (msgbox "~w\n~w" x y)))

  ;;; 各自，C-j や C-u C-j で上記のコマンドを実行してみください。


■commandp
[Type       ]: Function
[Arguments  ]: commandp OBJECT
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: 関数
[Description]: 
関数がinteractive宣言されていれば tを返し、そうでなければnilを返します。


■compile-file-pathname
[Type       ]: Function
[Arguments  ]: compile-file-pathname PATHNAME
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
xyzzy でバイトコンパイルした時の出力ファイル名を返します。


■compile-regexp
[Type       ]: Function
[Arguments  ]: compile-regexp REGEXP &optional CASE-FOLD
[Package    ]: editor
[Seealso    ]: compiled-regexp-source , compiled-regexp-case-fold-p , scan-buffer
[File       ]: builtin.l
[Section    ]: 検索・正規表現
[Description]: 
正規表現をコンパイルします。
随時正規表現の解析を行わない分、多少検索が早くなるようです。
第二引数にnil以外を指定すると(普通はtを指定します)大文字小文字を区別しません。

  REGEXP     : コンパイルする正規表現
  :case-fold : 大文字小文字を区別するか？
        t       大文字小文字は区別しない。
        nil     大文字小文字をする。

scan-bufferの引数にコンパイルされた正規表現を渡した場合には、
compile-regexpでの指定が有効になり,scan-bufferの引数にある:case-foldは無
視されます。

使用例：
  ;;; "単語.単語:"という正規表現をコンパイルしてみる。
  ;;; 真ん中の'.'は正規表現として扱って欲しくないので、regexp-quoteする。
  (compile-regexp (concat "\\w+" (regexp-quote ".") "\\w+:"))
  => #<compiled regular expression: \w+\.\w+:>


■compile-regexp すると一応高速化されるんでしょうか？
[Type       ]: Tips
[Section    ]: 検索・正規表現
[Description]: 
遅くはならないはずです(^^; ま、せいぜいこの程度ですが。

  (let ((tick (get-internal-real-time)))
    (dotimes (x 100000)
      (string-match "a" "a"))
    (- (get-internal-real-time) tick))
  => 3484
  
  (let ((tick (get-internal-real-time))
        (regexp (compile-regexp "a")))
    (dotimes (x 100000)
      (string-match regexp "a"))
    (- (get-internal-real-time) tick))
  => 2984


■compile-regexp-keyword-list
[Type       ]: Function
[Arguments  ]: compile-regexp-keyword-list LIST
[Package    ]: editor
[Seealso    ]: regexp-keyword-list
[File       ]: re-kwd.l
[Section    ]: 検索・正規表現
[Description]: 
regexp-keyword-list用に正規表現のコンパイルを行います。
指定するLISTの形式はregexp-keyword-listを参照して下さい。


■compiled-function-p
[Type       ]: Function
[Arguments  ]: compiled-function-p OBJECT
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
OBJECTがcompiled code objectならt、それ以外ならnilを返します。

使用例：
  ;;; carの型を調べてみる。
  (type-of #'car)
  => compiled-function
  (compiled-function-p #'car)
  => t


■compiled-regexp-case-fold-p
[Type       ]: Function
[Arguments  ]: compiled-regexp-case-fold-p REGEXP
[Package    ]: editor
[Seealso    ]: compile-regexp
[File       ]: builtin.l
[Section    ]: 検索・正規表現
[Description]: 
コンパイル済みの正規表現が、大文字小文字を区別するようになってい
るかどうかを判定します。

使用例：
  (setq a (compile-regexp "a+bc*d" t))
  => #<compiled regular expression: a+bc*d>
  (compiled-regexp-case-fold-p a)
  => t


■compiled-regexp-source
[Type       ]: Function
[Arguments  ]: compiled-regexp-source REGEXP
[Package    ]: editor
[Seealso    ]: compiled-regexp-case-fold-p
[File       ]: builtin.l
[Section    ]: 検索・正規表現
[Description]: 
コンパイル済みの正規表現から元の正規表現を抽出します。

使用例：
  (setq a (compile-regexp "a+bc*d" t))
  => #<compiled regular expression: a+bc*d>
  (compiled-regexp-source a)
  => "a+bc*d"


■complement
[Type       ]: Function
[Arguments  ]: complement FN
[Package    ]: lisp
[Seealso    ]: not
[File       ]: sequence.l
[Section    ]: シーケンス
[Description]: 
FN と逆の結果（not）を返す関数を作り、その関数を返します。

使用例:
  (funcall (complement 'oddp) 4)
  => t


■completing-read
[Type       ]: Function
[Arguments  ]: completing-read PROMPT COMPLETIONS &key :case-fold :default :history :must-match
[Package    ]: editor
[Seealso    ]: read-string , interactive
[File       ]: builtin.l
[Section    ]: ミニバッファ
[Description]: 
ミニバッファにプロンプトを表示してユーザーの入力を読み取ります。

  PROMPT      : 表示するプロンプト
  COMPLETIONS : 補完入力のためのリスト
  :case-fold  : non nilなら大文字小文字を区別しない
  :default    : 初期値の指定
  :history    : ヒストリに使用するリストを指定
  :must-match : non nilならcompletions以外受け付けない


■complex
[Type       ]: Function
[Arguments  ]: complex REALPART &optional IMAGPART
[Package    ]: lisp
[Seealso    ]: imagpart , realpart
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
指定された実数部(REALPART)と虚数部(IMAGPART)で複素数を表現します。

使用例：
  (setq a (complex 0 1))
  =>#C(0 1)

  (* a a)
  =>-1


■complexp
[Type       ]: Function
[Arguments  ]: complexp OBJECT
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
OBJECT が complex number なら t 、それ以外なら nil を返します。


■concat
[Type       ]: Function
[Arguments  ]: concat &rest SEQ
[Package    ]: editor
[Seealso    ]: concatenate
[File       ]: misc.l
[Section    ]: 文字列
[Description]: 
指定された文字列を連結します。

使用例：
  ;;; concatを使ってみる。
  (setq foo "It's ")            => "It's "
  (setq bar "show time!!!")     => "show time!!!"
  (concat foo bar)              => "It's show time!!!"
  (concat "It's " "show " "time!!!")
  =>"It's show time!!!"


■concatenate
[Type       ]: Function
[Arguments  ]: concatenate RESULT-TYPE &rest SEQUENCES
[Package    ]: lisp
[Seealso    ]: make-sequence , append , concat , vconcat
[File       ]: sequence.l
[Section    ]: シーケンス
[Description]: 
SEQUENCES を結合して RESULT-TYPE のシーケンスを新しく作り、返します。

RESULT-TYPE には make-sequence と同様のものが使用できます。
RESULT-TYPE の値によって、大まかには以下の関数と同じ挙動をします。
  'list   <--> append
  'string <--> concat
  'vector <--> vconcat

なお SEQUENCES と RESULT-TYPE の型は必ずしも一致しなくてもかまいません。


■concatenated-stream-streams
[Type       ]: Function
[Arguments  ]: concatenated-stream-streams CONCATENATED-STREAM
[Package    ]: lisp
[Seealso    ]: make-concatenated-stream
[File       ]: builtin.l
[Section    ]: 入出力
[Description]: 
make-concatenated-streamで作られたCONCATENATED-STREAMの入力元のストリームのリ
ストを返します。

使用例：
  ;;; hogeの入力元をリストで得る。
  (with-open-stream (foo (make-string-input-stream "foo"))
    (with-open-stream (bar (make-string-input-stream "bar"))
      (with-open-stream (hoge (make-concatenated-stream foo bar))
        (concatenated-stream-streams hoge))))
  => (#<string-input stream 48042632>
      #<string-input stream 48042544>)


■cond
[Type       ]: Macro
[Arguments  ]: cond &rest FORMS
[Package    ]: lisp
[File       ]: evalmacs.l
[Section    ]: 制御構造
[Description]: 
cond CLAUSE...
     `cond'は任意個の選択肢から選択します。`cond'の個々のCLAUSEはリスト
     でなければなりません。このリストのCARはCONDITIONです。残りの要素は
     (もしあれば)BODY-FORMSです。したがって句(clause)は次のようになりま
     す。

          (CONDITION BODY-FORMS...)

     `cond'は個々の句のCONDITIONを評価していくことによって、その句の並び
     をテキストどおりの順序で試します。CONDITIONの値が`nil'でなければ、
     その句は「成功」します。その場合、`cond' はそのBODY-FORMSを評価し、
     BODY-FORMSの最後の値が`cond'の値となります。残りの句は無視されます。

     CONDITIONの値が`nil'ならば、その句は「失敗」し、`cond'は次の句に制
     御を移し、その CONDITIONを試していきます。

     すべてのCONDITIONが`nil'に評価された場合、すなわち、すべての句が失
     敗した場合、`cond'は`nil'を返します。

     句は次のようになっているかもしれません。

          (CONDITION)

     その場合、CONDITIONのテスト結果が`nil'でなければ、CONDITIONの値が
     `cond'形式の値になります。

     以下の例では四つの句を持っていて、それぞれ`x'の値が数値、文字列、バッ
     ファ、シンボルのどれかであるかをテストします。

          (cond ((numberp x) x)
                ((stringp x) x)
                ((bufferp x)
                 (setq temporary-hack x) ; 一つの句に
                 (buffer-name x))        ; 複数の body-forms
                ((symbolp x) (symbol-value x)))

     最後の句より前の句がどれも成功しなかった場合には、その最後の句を実
     行したいということがよくあります。これを行うために私たちは次のよう
     に最後の句のCONDITIONとして`t'を使用します。`(t BODY-FORMS)'。形式
     `t'は`t'に評価され、決して`nil'にはならず、したがって、この句は決し
     て失敗せず、最悪でもそこには到達する`cond'が提供されます。

     例えば、

          (cond ((eq a 'hack) 'foo)
                (t "default"))
          => "default"

     この式は`a'の値が`hack'ならば`foo'を返し、そうでなければ文字列
     `"default"'を返す`cond'です。

あらゆる条件分岐の構造は`cond'でも`if'でも表現することができます。したがっ
て、どちらを使うかの選択はスタイルの問題です。例えば:

     (if A B C)
     ==
     (cond (A B) (t C))


■conjugate
[Type       ]: Function
[Arguments  ]: conjugate NUMBER
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
共役複素数を返します。


■connect
[Type       ]: Function
[Arguments  ]: connect HOSTNAME SERVICE &key :encoding
[Package    ]: editor
[Seealso    ]: open-network-stream
[File       ]: builtin.l
[Section    ]: システム
[Description]: 
ホストのポートとのTCP接続を開きます。
成功すれば接続へのストリームを返します。

参考：
  ;;; http://www.yahoo.co.jp/を取得してみる。
  (with-open-stream (stream (connect "www.yahoo.co.jp" 80))
    (format stream "GET / HTTP/1.0\n\n")
    (while (setq in (read-line stream nil))
      (insert in "\n")))


■cons
[Type       ]: Function
[Arguments  ]: cons X Y
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: リスト
[Description]: 
新しいリストを返します。

主に、新しくリストを作る際に用いる関数です。これは X を car、 
Y を cdr として、コンスセルを新しく作り、この新しいコンスセルへの
ポインタを返します。 (通常はリストですが) Y が特定のあるタイプでな
くてはならないという制限はありません。

使用例：
  (cons 1 '(2))
  => (1 2)
  (cons 1 '())
  => (1)
  (cons 1 2)
  => (1 . 2)


■consp
[Type       ]: Function
[Arguments  ]: consp OBJECT
[Package    ]: lisp
[Seealso    ]: atom
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
OBJECTがconsならt、それ以外ならnilを返します。

  (consp x) == (typep x 'cons) == (not (typep x 'atom))

注意： (consp '()) は '() == nilなのでnil。


■constantp
[Type       ]: Function
[Arguments  ]: constantp OBJECT
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 変数と定数
[Description]: 
オブジェクトがconstantかどうかを返します。

  t     オブジェクトはconstant
  nil   オブジェクトはconstantでない

使用例：
  ;;; defvar/defconstantの違い
  (defvar foo 2)
  => foo
  (defconstant bar 3)
  => bar
  (constantp 'foo)
  => nil
  (constantp 'bar)
  => t


■continue-popup
[Type       ]: Function
[Arguments  ]: continue-popup
[Package    ]: editor
[Seealso    ]: popup-string
[File       ]: builtin.l
[Section    ]: その他
[Description]: 
popup-stringで前回表示した内容を再度表示します。


■copy-alist
[Type       ]: Function
[Arguments  ]: copy-alist LIST
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: リスト
[Description]: 
連想リストのコピーを返します。例えばこんな連想リストをコピーした場合に、
オリジナルと同じものを指している部分に下線を引いています。copy-listでは
最上位の要素そのものがオリジナルと共有しているのに対し、copy-alistは第二
階層の要素を共有しています。

オリジナル：
  '(((1 2) . #\a) ((3 4) . #\b))

copy-list ：
  '(((1 2) . #\a) ((3 4) . #\b))
    ~~~~~~~~~~~~~ ~~~~~~~~~~~~~
copy-alist：
  '(((1 2) . #\a) ((3 4) . #\b))
     ~~~~~   ~~~   ~~~~~   ~~~

GNU Emacs Lisp Reference Manualによると、コピー元の連想リストとは独立し
て連想リストの修正を行えるようにするためとか。下の例でも示しているとおり、
copy-listでは元のリストまで変わってしまいます。

使用例：
  ;;; copy-listとcopy-alistの違いを見てみる。
  (setq a '((1 . #\a) (2 . #\b)))       => ((1 . #\a) (2 . #\b))
  (setq b (copy-list a))                => ((1 . #\a) (2 . #\b))
  (setq c (copy-alist a))               => ((1 . #\a) (2 . #\b))
  (rplacd (assoc 2 a) #\c)              => (2 . #\c)
  a                                     => ((1 . #\a) (2 . #\c))
  b                                     => ((1 . #\a) (2 . #\c))
  c                                     => ((1 . #\a) (2 . #\b))


■copy-file
[Type       ]: Function
[Arguments  ]: copy-file FILE NEW-FILE &key :if-exists :copy-attributes :if-access-denied
[Package    ]: lisp
[Seealso    ]: rename-file
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
ファイルをコピーします。

  FILE             : コピー元のファイル名を指定します。
  NEW-FILE         : コピー先のファイル名を指定します。
  :copy-attributes : コピーするときの属性を指定します。
                     指定できる属性はget-file-infoを参照して下さい。
  :if-exists       : ファイルが存在しない場合の動作を指定します。
        :error          エラーを出力します。
        :skip           エラーは出力せず、nilを返します。
        :overwrite      強制的にファイル名の変更を試みます。
  :if-access-denied : アクセスが拒否された場合の動作を指定します。
        :error          エラーを出力します。
        :skip           エラーは出力せず、nilを返します。

使用例：
  ;;; ローカルのautoexec.batを マシン名 VENUSの /work/autoexec.batにコピーする。
  (copy-file "c:/autoexec.bat" "//VENUS/work/autoexec.bat"
             :if-exists :overwrite)


■copy-keymap
[Type       ]: Function
[Arguments  ]: copy-keymap MAP
[Package    ]: editor
[File       ]: keymap.l
[Section    ]: キーマップ
[Description]: 
キーマップのコピーを返します。

使用例：
  ;;; gresreg.lより
  ;;; query-replaceのキーマップをコピーして
  ;;; query-gresregのキーマップを作って、ちょっと修正する。
  (unless *query-gresreg-map*
    (setq *query-gresreg-map* (copy-keymap *query-replace-map*))
    (define-key *query-gresreg-map* #\C-g '(throw . quit)))


■copy-list
[Type       ]: Function
[Arguments  ]: copy-list LIST
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: リスト
[Description]: 
リストのコピーを返します。
コピーとオリジナルはequalですが、eqではありません。コピーとオリジナルは
同じ構造を持っており、一番上位のリストの要素は同じものを共有しています。
一方を変えると他方も変わります。オリジナルと同じものを指している部分に下
線を引いています。

オリジナル：
  '(((1 2) . #\a) ((3 4) . #\b))

copy-list ：
  '(((1 2) . #\a) ((3 4) . #\b))
    ~~~~~~~~~~~~~ ~~~~~~~~~~~~~
使用例：
  ;;; [A] eqではないことを示してみます。
  (setq a '((1 2 3) (4 5 6)))   => ((1 2 3) (4 5 6))
  (setq b (copy-list a))        => ((1 2 3) (4 5 6))
  (eq a b)                      => nil
  (equal a b)                   => t
  ;;; [B] car同士はeqです。
  (eq (car a) (car b))          => t
  ;;; [C] caarを変えると変わるけど、carを変えても変わらない。
  (progn (setf (caar a) 7) a)   => ((7 2 3) (4 5 6))
  b                             => ((7 2 3) (4 5 6))
  (progn (setf (car a) 8) a)    => (8 (4 5 6))
  b                             => ((7 2 3) (4 5 6))


■copy-menu-items
[Type       ]: Function
[Arguments  ]: copy-menu-items OLD-MENU NEW-MENU
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: メニュー
[Description]: 
old-menuの構造をnew-menuにトップレベルでコピーします。

亀井さん談：
  ちなみにバグってます。old-menuとnew-menuが同じ場合のことを何も考えていません。


■copy-rectangle
[Type       ]: Function
[Arguments  ]: copy-rectangle P1 P2
[Package    ]: editor
[Seealso    ]: kill-rectangle , copy-rectangle-selection
[File       ]: rectangl.l
[Section    ]: リージョン
[Description]: 
P1とP2で指定される矩形領域をコピーします。コピーした矩形領域のyankには、
yank-rectangleを使います。


■copy-rectangle-selection
[Type       ]: Function
[Arguments  ]: copy-rectangle-selection
[Package    ]: editor
[Seealso    ]: kill-rectangle-selection , copy-rectangle , operate-on-rectangle-selection
[File       ]: select.l
[Section    ]: リージョン
[Description]: 
マウスで矩形選択されたセレクションの領域をコピーします。yankには
yank-rectangle-selectionを使いますが、yank-rectangleでも行けそうです。
コピーした内容は*kill-ring*ともクリップボードとも違う領域に格納されてい
るようです。


■copy-rectangle-selection-to-clipboard
[Type       ]: Function
[Arguments  ]: copy-rectangle-selection-to-clipboard
[Package    ]: editor
[Seealso    ]: kill-rectangle-selection-to-clipboard , copy-rectangle-selection
[File       ]: select.l
[Section    ]: リージョン
[Description]: 
マウスで矩形選択されたセレクションの領域をクリップボードにコピーします。


■copy-rectangle-to-register
[Type       ]: Function
[Arguments  ]: copy-rectangle-to-register R START END &optional DELETE
[Package    ]: editor
[Seealso    ]: copy-rectangle , kill-rectangle , insert-register
[File       ]: register.l
[Section    ]: リージョン
[Description]: 
START と END で指定される矩形領域をレジスタ R へコピーします。
DELETE が non-nil ならば同時に領域を削除します。
コピーした矩形領域の yank には、 insert-register を使います。


■copy-region-as-kill
[Type       ]: Function
[Arguments  ]: copy-region-as-kill FROM TO
[Package    ]: editor
[Seealso    ]: kill-region
[File       ]: region.l
[Section    ]: リージョン
[Description]: 
リージョンをコピーして、キルリングに追加します。


■copy-region-to-clipboard
[Type       ]: Function
[Arguments  ]: copy-region-to-clipboard FROM TO
[Package    ]: editor
[File       ]: region.l
[Section    ]: リージョン
[Description]: 
指定されたリージョンをクリップボードにコピーします。

  FROM : リージョンの開始位置を指定します。
  TO   : リージョンの終了位置を指定します。


■copy-selection
[Type       ]: Function
[Arguments  ]: copy-selection
[Package    ]: editor
[Seealso    ]: yank-selection , kill-selection
[File       ]: select.l
[Section    ]: リージョン
[Description]: 
選択された領域をコピーして、*selection-ring*の先頭に追加します。
追加した内容はyank-selectionで貼り付けられます。
デフォルトでは'F8'に割り付けられています。


■copy-selection-to-clipboard
[Type       ]: Function
[Arguments  ]: copy-selection-to-clipboard
[Package    ]: editor
[File       ]: select.l
[Section    ]: リージョン
[Description]: 
選択範囲をクリップボードに転送します。

使用例：
  ;;; 1. いったんJISに変換して保存
  ;;; 2. [ファイル]-[開く]で漢字コードを[シフトJIS]にして開く
  ;;;    （またはメモ帳などで開く？）
  ;;; 3. 選択してコピー
  (defun tojiscopy ()
    (interactive)
    (let ((ocode *kanji-expected-code*)
          (tempfile (concat (default-directory) "tempfile.txt")))
      (save-excursion
        (set-buffer-kanji-fileio-code 1)
        (write-region (point-min) (point-max) tempfile nil)
        (switch-to-buffer "*JIS*"))
      (pop-to-buffer "*JIS*")
      (setq *kanji-expected-code* 0)
      (find-file tempfile)
      (setq *kanji-expected-code* ocode)
      (selection-whole-buffer)
      (copy-selection-to-clipboard)))


■copy-seq
[Type       ]: Function
[Arguments  ]: copy-seq SEQUENCE
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: シーケンス
[Description]: 
SEQUENCEのコピーを作成して返します。元のSEQUENCEとはequalpだがeqではありません。

  (copy-seq x) == (subseq x 0)


■copy-string
[Type       ]: Function
[Arguments  ]: copy-string STRING
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 文字列
[Description]: 
STRINGのコピーを返します。

使用例：
  ;;; 単にsetqしただけでは同じオブジェクトになっている。
  (setq foo "abc")              => "abc"
  (setq bar foo)                => "abc"
  (eq foo bar)                  => t

  ;;; コピーすると別のオブジェクトになる。
  (setq bar (copy-string foo))  => "abc"
  (eq foo bar)                  => nil


■copy-symbol
[Type       ]: Function
[Arguments  ]: copy-symbol SYMBOL &optional COPY-PROPS
[Package    ]: lisp
[Seealso    ]: uninterned
[File       ]: builtin.l
[Section    ]: シンボル
[Description]: 
同じ名前を持つuninternedなSYMBOLのコピーを返します。
COPY-PROPSがnon-nilなら、初期定義値、プロパティリストもコピーされます。


■copy-syntax-table
[Type       ]: Function
[Arguments  ]: copy-syntax-table FROM-SYNTAX-TABLE TO-SYNTAX-TABLE
[Package    ]: editor
[Seealso    ]: make-syntax-table
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
FROM-SYNTAX-TABLE を TO-SYNTAX-TABLE へコピーします。


■copy-to-clipboard
[Type       ]: Function
[Arguments  ]: copy-to-clipboard STRING
[Package    ]: editor
[Seealso    ]: get-clipboard-data
[File       ]: builtin.l
[Section    ]: システム
[Description]: 
指定された文字列をクリップボードにコピーします。

  STRING : クリップボードにコピーする文字列を指定します。


■copy-to-register
[Type       ]: Function
[Arguments  ]: copy-to-register R START END &optional DELETE
[Package    ]: editor
[Seealso    ]: insert-register , append-to-register
[File       ]: register.l
[Section    ]: リージョン
[Description]: 
START と END で指定されるリージョンをレジスタ R へコピーします。
DELETE が non-nil ならば同時にリージョンをを削除します。

コピーしたテキストの yank には、 insert-register を使います。


■cos
[Type       ]: Function
[Arguments  ]: cos RADIANS
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
余弦関数の値を返します。


■cosh
[Type       ]: Function
[Arguments  ]: cosh Z
[Package    ]: lisp
[File       ]: number.l
[Section    ]: 数値
[Description]: 
双曲線余弦関数を計算します。


■count
[Type       ]: Function
[Arguments  ]: count ITEM SEQUENCE &key :from-end :test :test-not :start :end :key
[Package    ]: lisp
[Seealso    ]: count-if , count-if-not
[File       ]: sequence.l
[Section    ]: シーケンス
[Description]: 
ITEMとのテストを満足するSEQUENCE中の要素数を返します。結果は非負の整数です。

  :from-end : 他の関数との互換性のために用意されたもので、結果に影響しません。
  :test     : テストを行う2項演算子
  :start    : テストする開始位置
  :end      : テストの終了位置


■count-buffers
[Type       ]: Function
[Arguments  ]: count-buffers &optional ALL
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
全バッファの数を返します。

  ALL : " *Completion*"や" *Minibuf0*"等の先頭が空白のバッファも数えるか？
        t       先頭が空白のバッファも数える。
        nil     先頭が空白のバッファは数えない。

使用例：
  ;;; バッファの数を数えてみる。
  (count-buffers)
  => 20
  (count-buffers t)
  => 23


■count-column
[Type       ]: Function
[Arguments  ]: count-column STRING &optional START BUFFER
[Package    ]: editor
[Seealso    ]: char-columns , current-column
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
文字列 STRING を出力した場合の出力後の桁位置を返します。
START と BUFFER はタブ文字の幅の計算に影響を与えます。

  STRING : 対象文字列
  START  : 出力開始とする桁位置
        nil      桁位置 0 からの出力
        INTEGER  桁位置 INTEGER からの出力 (0 未満の場合 range-error)
  BUFFER : 出力バッファ
        nil      タブ幅として (tab-column) の値を用います。
                 (tab-column (selected-buffer)) の値ではありません。
        BUFFER   タブ幅として (tab-column BUFFER) の値を用います。

戻り値：
  INTEGER   文字列 STRING 出力後の桁位置

補足：
  改行文字 "\n" は桁位置の初期化としては働かず、幅 2 として扱われます。


■count-if
[Type       ]: Function
[Arguments  ]: count-if TEST SEQUENCE &key :from-end :start :end :key
[Package    ]: lisp
[Seealso    ]: count , count-if-not
[File       ]: sequence.l
[Section    ]: シーケンス
[Description]: 
TESTを満足するSEQUENCE中の要素数を返します。結果は非負の整数です。

  :from-end : 他の関数との互換性のために用意されたもので、結果に影響しません。
  :test     : テストを行う2項演算子
  :start    : テストする開始位置
  :end      : テストの終了位置


■count-if-not
[Type       ]: Function
[Arguments  ]: count-if-not TEST SEQUENCE &key :from-end :start :end :key
[Package    ]: lisp
[Seealso    ]: count , count-if
[File       ]: sequence.l
[Section    ]: シーケンス
[Description]: 
TESTを満足しないSEQUENCE中の要素数を返します。結果は非負の整数です。

  :from-end : 他の関数との互換性のために用意されたもので、結果に影響しません。
  :test     : テストを行う2項演算子
  :start    : テストする開始位置
  :end      : テストの終了位置


■count-windows
[Type       ]: Function
[Arguments  ]: count-windows &optional MINIBUF
[Package    ]: editor
[File       ]: window.l
[Section    ]: ウィンドウ
[Description]: 
ウィンドウの数を返します。

  MINIBUF : フラグはミニバッファウィンドウを数えるかどうかです。
        t       ミニバッファを数える。
        nil     ミニバッファを数えない。


■count-xyzzy-instance
[Type       ]: Function
[Arguments  ]: count-xyzzy-instance
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: プロセス
[Description]: 
現在起動中のxyzzyの数を返します。


■create-archive
[Type       ]: Function
[Arguments  ]: create-archive ARCHIVE-FILE FILES BASE-DIRECTORY
[Package    ]: editor
[Seealso    ]: extract-archive , delete-file-in-archive
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
アーカイブを作成します。

  ARCHIVE-FILE   : 作成/追加する書庫ファイル名を指定します。指定したファ
                   イルが存在すれば追加、なければ新規作成します。書庫フ
                   ァイルを作成するディレクトリを指定する場合は、フルパ
                   スで指定します。
  FILES          : アーカイブするファイルのリストを指定します。フルパス
                   で指定する必要があります。
  BASE-DIRECTORY : 基準となるディレクトリを指定します。

使用例：
  ;;; foo.lzh に c:/tmp/a.c, c:/tmp/b.c を追加します。
  (create-archive "foo.lzh"
                  '("c:/tmp/a.c" "c:/tmp/b.c")
                  "c:/tmp")


■create-directory
[Type       ]: Function
[Arguments  ]: create-directory DIRNAME &key :if-exists
[Package    ]: lisp
[Seealso    ]: delete-directory
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
ディレクトリを作成します。

  DIRNAME    : 作成対象のディレクトリ
  :if-exists : ディレクトリが存在していたときの動作を指定します。
        :error          エラーを出力します。
        :skip           エラーは出力せず、t を返します。

戻り値は作成できたかどうかによります。

  t   ディレクトリの作成に成功
  nil ディレクトリの作成に失敗

使用例：
  (create-directory "C:/xyzzy/testdir")
  => t


■create-file-buffer
[Type       ]: Function
[Arguments  ]: create-file-buffer FILENAME
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
ファイルを参照するバッファを作成して返します。


■create-menu
[Type       ]: Function
[Arguments  ]: create-menu &optional TAG
[Package    ]: editor
[Seealso    ]: create-popup-menu , define-menu , set-menu , use-local-menu
[File       ]: builtin.l
[Section    ]: メニュー
[Description]: 
新たに作成した空のメニューを返します。

  TAG : 識別用のタグを指定します。

メニューの中身は空なので、以下の関数で登録必要があります。
中身を動的に作る必要が無ければ、define-menuを使用した方が良いです。

  add-menu-item         : 項目を追加します。
  add-menu-separator    : セパレータを追加します。
  add-popup-menu        : ポップアップメニューを追加します。
  insert-menu-item      : 項目を挿入します。
  insert-menu-separator : セパレータを挿入します。
  insert-popup-menu     : ポップアップメニューを挿入します。

作成したメニューは以下の関数で使います。

  set-menu       : 標準のメニューとして設定します。
  use-local-menu : バッファにローカルなメニューとして設定します。


■create-new-buffer
[Type       ]: Function
[Arguments  ]: create-new-buffer NAME
[Package    ]: editor
[Seealso    ]: get-buffer-create , *create-buffer-hook* , find-name-buffer , バッファの内部構造
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
名前がNAMEのバッファを作成して返します。もしその名前のバッファが存在すれ
ば、name<1>, name<2>...と番号を付けた名前になります。

使用例：
  (create-new-buffer "test")
  => #<buffer: test>
  (create-new-buffer "test")
  => #<buffer: test<2>>


■create-popup-menu
[Type       ]: Function
[Arguments  ]: create-popup-menu &optional TAG
[Package    ]: editor
[Seealso    ]: define-popup-menu
[File       ]: builtin.l
[Section    ]: メニュー
[Description]: 
新たに作成したポップアップメニューを返します。ポップアップメニューとして
使えることを除けば、create-menuで作成されたメニューを同じです。

  TAG : 識別用のタグを指定します。

メニューの中身は空なので、create-menuと同じように登録する必要があります。
中身を動的に作る必要が無ければ、define-popup-menuを使用した方が良いです。

作成したポップアップメニューは以下の関数で使います。

  insert-popup-menu  : 既存のメニューにポップアップメニューを追加します。
  track-popup-menu   : ポップアップメニューをその場で表示します。


■create-shortcut
[Type       ]: Function
[Arguments  ]: create-shortcut SRC DEST &rest REST
[Package    ]: editor
[Seealso    ]: resolve-shortcut
[File       ]: files.l
[Section    ]: ファイルシステム
[Description]: 
ショートカットを作成します。

  SRC  : ショートカットが指すパスを指定します。
  DEST : ショートカットを作成するパスを指定します。
  REST : 作成するショートカットへのパラメータを与えることが出来ます。
     :description        ドラッグオーバの時やプロパティ表示時に見られる説明
     :arguments          コマンドライン引数
     :working-directory  作業ディレクトリ
     :show               ウィンドウの状態の指定
                            :show      標準のサイズで起動
                            :maximize  最大化状態で起動
                            :minimize  最小化状態で起動

使用例：
  ;;; スタートメニューにショートカットを作成する。
  (create-shortcut (merge-pathnames "xyzzy.exe" (si:system-root)) (get-special-folder-location :start-menu))
  => t
  (delete-file (merge-pathnames "xyzzy.exe.lnk" (get-special-folder-location :start-menu)))
  => t

  ;;; 送るメニューにxyzzyを登録する。
  (create-shortcut (merge-pathnames "xyzzy.exe" (si:system-root)) (get-special-folder-location :send-to))
  => t
  (delete-file (merge-pathnames "xyzzy.exe.lnk" (get-special-folder-location :send-to)))
  => t


■create-tab-bar
[Type       ]: Function
[Arguments  ]: create-tab-bar BAR CALLBACK
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: メニュー
[Description]: 
タブバーの識別子BARと、タブが選択されたとき実行するコールバック関数
CALLBACKを指定して、タブバーを作成します。CALLBACKは、各タブの作成時に設
定したシンボルが渡されます。

使用例：
  (progn
    (defun a-func (a) (msgbox "~A ~A" a (type-of a)))
    (define-command-bar 'a-bar "a bar")
    (create-tab-bar 'a-bar 'a-func)
    (show-command-bar 'a-bar)
    (tab-bar-add-item 'a-bar '1st "- 1st -" "1st item")
    (tab-bar-add-item 'a-bar '2nd "- 2nd -" "2nd item"))
  => t  
  (progn
    (tab-bar-delete-item 'a-bar '1st)
    (tab-bar-delete-item 'a-bar '2nd)
    (delete-tool-bar 'a-bar)
    (delete-command-bar 'a-bar))
  => t


■create-tool-bar
[Type       ]: Function
[Arguments  ]: create-tool-bar NAME BITMAP ITEMS
[Package    ]: editor
[Seealso    ]: define-command-bar , create-tab-bar , nil
[Link       ]: lisp/cmdbar.l
[File       ]: builtin.l
[Section    ]: メニュー
[Description]: 
ツールバーNAMEを作成します。ツールバーに表示するビットマップファイルのフ
ルパスBITMAPと、ツールバーの項目ITEMSを指定します。ITEMSは以下の形式で記
述します。項目の替わりに:sepを指定するとセパレータを表示できます。

形式：
  ((ツールチップ1 アイコンの番号1 実行する関数1 状態制御用1)
   (ツールチップ2 アイコンの番号2 実行する関数2 状態制御用2)
    ...
   (ツールチップN アイコンの番号N 実行する関数N 状態制御用N))

補足：
  アイコンの番号：
        16x16の領域をひとつのアイコンとみなして、ビットマップファイルの
        左から0ベースの番号で指定します。
  状態制御用：
        ボタンの状態が何に依存して変更するかを指定します。
        :modified              編集されていたら 
        :selection             行モード選択、文字モード選択をしていたら
        :modify-selection      編集可能なバッファで行モード選択
                               文字モード選択をしていたら
        :rectangle             矩形選択していたら
        :modify-rectangle      編集可能なバッファで矩形選択をしていたら
        :any-selection         選択していたら
        :modify-any-selection  編集可能なバッファで選択していたら
        :clipboard             編集可能なバッファでクリップボードに値が入っていたら
        :undo                  UNDOできる状態なら
        :redo                  リドゥできる状態なら
        関数 (function)        関数が返す値による
            :disable           ボタンを押せない状態 
            :check             ボタンを押してへこんだ状態 
            上記以外           普通の押せる状態 
        上記以外               指定しないとの同じで無条件に押せる状態 
        ※OHKUBO Hiroshiさんのサイトより
          http://ohkubo.s53.xrea.com/xyzzy/memo.html

使用例：
(create-tool-bar 'abc-tool-bar
 (merge-pathnames "toolbar.bmp" (etc-path))
 '(("line-number" 0 toggle-line-number)
   ("vscroll-bar" 1 toggle-vscroll-bar)
   ("mode-line" 2 toggle-mode-line)
   :sep
   ("function-bar" 3 toggle-function-bar)
   ("fold-line" 4 toggle-fold-line)
   ("read-only" 5 toggle-read-only)))


■ctl-x-4-map
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: ctl-x-4-prefix
[File       ]: keymap.l
[Section    ]: キーマップ
[Description]: 
C-x 4 に続くキーシーケンスのバインディングを格納するキーマップです。


■ctl-x-4-prefix
[Type       ]: Function
[Arguments  ]: ctl-x-4-prefix
[Package    ]: editor
[Seealso    ]: ctl-x-4-map
[File       ]: keymap.l
[Section    ]: キーマップ
[Description]: 
C-x 4 プレフィックスです。 [C-x 4]
デフォルトでは
  C-x 4 b      switch-to-buffer-other-window
  C-x 4 f      find-file-other-window
の二つが設定されています。

ctl-x-4-prefix の関数セルは普通のコマンドではなく ctl-x-4-map というキ
ーマップを保持しています。


■ctl-x-6-map
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: ctl-x-6-prefix
[File       ]: pframe.l
[Section    ]: キーマップ
[Description]: 
C-x 6 に続くキーシーケンスのバインディングを格納するキーマップです。


■ctl-x-6-prefix
[Type       ]: Function
[Arguments  ]: ctl-x-6-prefix
[Package    ]: editor
[Seealso    ]: ctl-x-6-map
[File       ]: pframe.l
[Section    ]: キーマップ
[Description]: 
C-x 6 プレフィックスです。 [C-x 6]
デフォルトではフレーム関係のコマンドが登録されています。

ctl-x-6-prefix の関数セルは普通のコマンドではなく ctl-x-6-map というキ
ーマップを保持しています。


■ctl-x-map
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: ctl-x-prefix
[File       ]: keymap.l
[Section    ]: キーマップ
[Description]: 
C-x に続くキーシーケンスのバインディングを格納するキーマップです。


■ctl-x-prefix
[Type       ]: Function
[Arguments  ]: ctl-x-prefix
[Package    ]: editor
[Seealso    ]: ctl-x-map
[File       ]: keymap.l
[Section    ]: キーマップ
[Description]: 
C-x プレフィックスです。 [C-x]

ctl-x-prefix の関数セルは普通のコマンドではなく ctl-x-map というキーマ
ップを保持しています。

参考:
  ;;; keymap.l
  (defvar ctl-x-map (make-keymap))
  (setf (symbol-function 'ctl-x-prefix) ctl-x-map)


■current-column
[Type       ]: Function
[Arguments  ]: current-column
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
現在の桁位置を返します。


■current-line-columns
[Type       ]: Function
[Arguments  ]: current-line-columns
[Package    ]: editor
[Seealso    ]: current-column , char-columns
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
現在の表示行の桁数を返します。
改行文字 (#\LFD) は 2 桁と扱われます。


■current-line-number
[Type       ]: Function
[Arguments  ]: current-line-number
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
現在の物理行の行番号を返します。


■current-menu
[Type       ]: Function
[Arguments  ]: current-menu &optional BUFFER
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: メニュー
[Description]: 
現在表示されているメニューを返します。use-local-menuを使用してい
るバッファは*app-menu*とは違うものが取得されます。


■current-virtual-column
[Type       ]: Function
[Arguments  ]: current-virtual-column
[Package    ]: editor
[Seealso    ]: goto-virtual-column
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
カーソル位置の表示桁を返します。
※実際の表示が表示行／物理行には依存しません。
(current-virtual-column)


■current-virtual-line-number
[Type       ]: Function
[Arguments  ]: current-virtual-line-number
[Package    ]: editor
[Seealso    ]: goto-virtual-line
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
現在のポイントが表示行で何行目かを返します。


■current-window-configuration
[Type       ]: Function
[Arguments  ]: current-window-configuration
[Package    ]: editor
[Seealso    ]: set-window-configuration
[File       ]: builtin.l
[Section    ]: ウィンドウ
[Description]: 
現在のウィンドウの状態を返します。
ここでいうウィンドウの状態とは、画面の分割状態、表示されているバッファを
指します。ウィンドウの状態はset-window-configurationで設定することが出来
ます。

使用例：
  ;;; 画面の状態を元に戻す。
  (split-window)
  => t
  (setq winconf (current-window-configuration))
  => (window-configuration #<window> ......  
  (delete-other-windows)
  => t
  (set-window-configuration winconf)


■cwd
[Type       ]: Function
[Arguments  ]: cwd
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
xyzzy.exeの作業ディレクトリを返します。プロパティの作業フォルダ(S)の
ディレクトリが返されるのだと思います。

使用例： 
  (cwd)
  =>"D:/WINNT/"


■dabbrev-expand
[Type       ]: Function
[Arguments  ]: dabbrev-expand &optional ARG
[Package    ]: editor
[File       ]: dabbrev.l
[Section    ]: テキスト
[Description]: 
動的略称展開により候補を順番に表示します。


■dabbrev-popup
[Type       ]: Function
[Arguments  ]: dabbrev-popup
[Package    ]: editor
[Seealso    ]: dabbrev-expand , popup-list
[File       ]: dabbrev.l
[Section    ]: テキスト
[Description]: 
dabbrev-expandのポップアップリスト版です。


■dde-execute
[Type       ]: Function
[Arguments  ]: dde-execute CHAN DATA
[Package    ]: editor
[Seealso    ]: dde-poke , dde-request , dde-terminate
[File       ]: builtin.l
[Section    ]: システム
[Description]: 
DDE EXECUTE を実行します。引数 chan は DDE チャンネル、data は相手にくら
わすコマンド文字列です。コマンドの内容は、相手のマニュアルに従ってくださ
い。dde-execute は t を返します。

  CHAN : チャンネルを指定します。
  DATA : データを指定します。

なお、DDE 関数では以下の例外が発生する可能性があります。必要であれば例外
を処理してください。

  dde-timeout        タイムアウトしました。
  dde-busy           DDE サーバが BUSY です。
  dde-low-memory     サーバ先行状態です
  dde-no-conv        DDE 対話が確立できません
  dde-not-processed  トランザクションの実行に失敗しました
  dde-server-died    サーバーが終了しました
  storage-error      メモリがありません
  dde-error          よくわかんないけど、とにかくエラーです


■dde-initiate
[Type       ]: Function
[Arguments  ]: dde-initiate SERVICE TOPIC
[Package    ]: editor
[Seealso    ]: dde-execute , dde-poke , dde-terminate
[File       ]: builtin.l
[Section    ]: システム
[Description]: 
DDE 対話を確立します。引数 SERVICE はサービス名、 TOPIC はトピックで、
それぞれ文字列型です。なにを指定するかは通信する相手のマニュアルを
参照してください。正常に終了した場合、DDE チャンネルを返します。
以降の通信ではこのDDE チャンネルを使用してください。


■dde-poke
[Type       ]: Function
[Arguments  ]: dde-poke CHAN ITEM DATA
[Package    ]: editor
[Seealso    ]: dde-execute , dde-request , dde-terminate
[File       ]: builtin.l
[Section    ]: システム
[Description]: 
DDE POKE を実行します。

  CHAN : チャンネルを指定します。
  ITEM : （詳細不明）
  DATA : データを文字列で指定します。

引数 CHAN は DDE チャンネル、DATA は相手にくらわす文字列です。文字列の内
容は、相手のマニュアルに従ってください。dde-poke は t を返します。


■dde-request
[Type       ]: Function
[Arguments  ]: dde-request CHAN DATA RESULT-TYPE
[Package    ]: editor
[Seealso    ]: dde-execute , dde-poke , dde-terminate
[File       ]: builtin.l
[Section    ]: システム
[Description]: 
DDE REQUEST を実行します。

  CHAN        : チャンネルを指定します。
  DATA        : データを指定します。
  RESULT-TYPE : 戻り値の型を指定します。

引数 chan は DDE チャンネル、data は相手にくらわす文字列です。文字列の内
容は、相手のマニュアルに従ってください。戻り値は DDE の相手が返したもの
を返しますが、RESULT-TYPE の指定によってデータの解釈を以下のようにおこな
います。

  :text   : 通常の文字列を返します。
  :binary : 漢字などを無視して返ってきたデータをそのまま文字列で返します。
  :int8
  :int16
  :int32  : データをそれぞれ 8, 16, 32 ビット整数の配列とみなして整数のリ
            ストで返します。配列の要素が 1 のときは整数値を返します。

戻り値型の指定は、もじらの DDE で遊ぼうと思って作っただけなので、通常は
指定しなくて構いません。


■dde-terminate
[Type       ]: Function
[Arguments  ]: dde-terminate CHAN
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: システム
[Description]: 
DDE 対話を終了します。引数 chan は DDE チャンネルです。正常に終了した場
合は t、すでに対話が終了していた場合は nil を返します。

  CHAN : チャンネルを指定します。


■decf
[Type       ]: Macro
[Arguments  ]: decf PLACE &optional (DELTA 1)
[Package    ]: lisp
[Seealso    ]: incf
[File       ]: setf.l
[Section    ]: 数値
[Description]: 
変数をデクリメントする

使用例：
  ;;; 変数xの値をデクリメントする。
  (setq x 1)    => 1
  (decf x)      => 0
  x             => 0


■declare
[Type       ]: Misc
[Package    ]: lisp
[Seealso    ]: special
[Section    ]: 変数と定数
[Description]: 
Common Lispの機能で、「変数を動的に bind しろ」と宣言する事です。
Emacs Lispではそもそも動的にしか bind できないので存在しません。

  (declare (special 変数名))

違いを図示します。

  ;;; 大域変数 x          ┏大域変数━━━━━━┓    Common Lisp/xyzzy lisp：
  (setq x 0)              ┃x │0             ←╂─┐大域変数のxを参照する。
                          ┠─┴────────┨  │(+ 0 12)となる
  ;;; 関数 bar            ┃                    ┃  │
  (defun bar (x)          ┃┏(bar 34)━━━━┓┃  │    Emacs Lisp：
    (foo 12))             ┃┃x │34        ←╂╂─│─┐呼び出しスタックの
                          ┃┠─┴──────┨┃  │  │深いところのxを参照する。
  ;;; 関数 foo            ┃┃                ┃┃  │  │(+ 34 12)となる。
  (defun foo (y)          ┃┃┏(foo 12)━━┓┃┃  │  │
     (+ x y))    ... ※   ┃┃┃y │12      ┃┃┃  │  │
                          ┃┃┠─┴────┨┃┃  │  │
                          ┃┃┃(+ x y)   ─╂╂╂─┴─┘

とあったときに(bar 34)と呼び出すと、古いLispでは(Emacs Lispを含む）
※の時点で x = 34, y = 12と見えます。ところが、Common Lispやxyzzy lispでは
※の時点で x = 0,  y = 12と見えます。

昔Lispはインタープリタだったので、動的バインディングでもよかったんだけど、
コンパイラを作る時に、効率上なにかと問題があってCommon Lisp
では、静的バインディングに変更になりました。

でも、そうすると、古いコードを移植するのが大変になるので、

                          ┏大域変数━━━━━━┓    
                          ┃x │0               ┃
                          ┠─┴────────┨
  ;;; 関数 bar            ┃                    ┃    
  (defun bar (x)          ┃┏(bar 34)━━━━┓┃    Common Lisp/xyzzy lisp：
    (declare (special x)) ┃┃x │34        ←╂╂─┐大域変数ではなく
    (foo 12))             ┃┠─┴──────┨┃  │スタック上のxを参照する。
                          ┃┃                ┃┃  │(+ 34 12)となる。
                          ┃┃┏(foo 12)━━┓┃┃  │
                          ┃┃┃y │12      ┃┃┃  │
                          ┃┃┠─┴────┨┃┃  │
                          ┃┃┃(+ x y)   ─╂╂╂─┘

と書いてやると古いLisp(Emacs Lisp)のように動くという訳。


■decode-escape-sequence
[Type       ]: Function
[Arguments  ]: decode-escape-sequence STRING REGEXPP
[Package    ]: editor
[Link       ]: [xyzzy:04201]
[File       ]: builtin.l
[Section    ]: 文字列
[Description]: 
エスケープシーケンスをデコードします。

  STRING ：デコードするエスケープシーケンス
  REGEXPP：STRING が正規表現か否かを指定します。

使用できるエスケープシーケンスは以下の通りです。
  \t     タブ
  \n     改行
  \r     復帰
  \f     改頁
  \v     垂直タブ
  \xNN   2桁までの16進数
  \XNNNN 4桁までの16進数

使用例：
  ;;; [\thoge]という6文字をデコードして5文字にする。
  "\\thoge"
  => "\\thoge"
  (decode-escape-sequence "\\thoge" nil)
  => "  hoge"
  (length "\\thoge")
  => 6
  (length (decode-escape-sequence "\\thoge" nil))
  => 5


■decode-mime-header
[Type       ]: Function
[Arguments  ]: decode-mime-header
[Package    ]: editor
[File       ]: encdec.l
[Section    ]: その他
[Description]: 
現在行から下にRFC822ヘッダを探してMIMEデコードします。


■decode-universal-time
[Type       ]: Function
[Arguments  ]: decode-universal-time UNIVERSAL-TIME &optional TIME-ZONE
[Package    ]: lisp
[Seealso    ]: format-date-string , encode-universal-time
[File       ]: builtin.l
[Section    ]: 日付・時間
[Description]: 
ユニバーサルタイム形式の時間から日時に変換します。

  UNIVERSAL-TIME : ユニバーサルタイム形式の時間を指定します。
  TIME-ZONE      : タイムゾーンを指定します。

変換された日時は多値で返されます。multiple-value-***系のマクロで受け取り
ましょう。日時からユニバーサルタイム形式の時間に変換するには、
encode-universal-timeを使用します。

使用例：
  ;;; .xyzzyの最終更新日(2003/3/30 9:34:25)を取得する。
  (multiple-value-list
   (decode-universal-time
    (file-write-time ".xyzzy")))
  => (25 34 9 30 3 2003 6 nil -9)

--- 原文 ---
Description: returns universal-time in Decoded Time format, allowing for 
time-zone. If this is unspecified, the value returned is for the current 
time zone set by *time-zone*. Nine values are returned, as for get-decoded-time.
  (multiple-value-list
    (decode-universal-time 3100393640))
  => (20 27 13 1 4 1998 2 nil -9)

  (multiple-value-list
    (decode-universal-time (file-write-time "c:/autoexec.bat"))
  => (20 27 13 1 4 1998 2 nil -9)

参照：
  timestmp.l


■default-directory
[Type       ]: Function
[Arguments  ]: default-directory &optional BUFFER
[Package    ]: editor
[Seealso    ]: set-default-directory
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
バッファが作業しているディレクトリを返します。

  BUFFER : バッファを指定します。
           指定がなければカレントバッファになります。

そのバッファでfind-file するときに最初に表示されるディレクトリのことです。
このディレクトリは M-x: cd や set-default-directoryで変更することができ
ます。

使用例：
  ;;; デフォルトディレクトリを移動してみる。
  (default-directory)
  => "C:/applications/xyzzy/site-lisp/"
  (cd "../..")
  => t
  (default-directory)
  => "C:/applications/"


■default-value
[Type       ]: Function
[Arguments  ]: default-value SYMBOL
[Package    ]: lisp
[Seealso    ]: symbol-value
[File       ]: builtin.l
[Section    ]: シンボル
[Description]: 
シンボルのデフォルトの値を返します。
シンボルがバッファローカルでないならば、symbol-valueと同じ値を返します。
シンボルがバッファローカルの時にデフォルトの値を持たない場合には、エラー
になります。デフォルトの値はsetq-defaultで指定します。

使用例：
  ;;; シンボルがデフォルトの値を持たない場合
  (make-local-variable 'foo)    => t
  (setq foo 123)                => 123
  (default-value 'foo)          => 変数が定義されていません: foo

  ;;; バッファローカルなシンボルの場合
  (defvar-local bar 234)        => bar
  (setq bar 345)                => 345
  (default-value 'bar)          => 234


■defconstant
[Type       ]: Macro
[Arguments  ]: defconstant NAME VALUE &optional DOC
[Package    ]: lisp
[File       ]: evalmacs.l
[Section    ]: 変数と定数
[Description]: 
定数を宣言します。

使用例：
  ;;; encoding.lの中より
  (defconstant *eol-crlf* 1)
  => *eol-crlf*


■define-abbrev-table
[Type       ]: Function
[Arguments  ]: define-abbrev-table TABNAME &optional DEFS
[Package    ]: editor
[File       ]: abbrev.l
[Section    ]: モード
[Description]: 
abbrev-tableを定義します。
（詳細不明）


■define-command-bar
[Type       ]: Function
[Arguments  ]: define-command-bar SYM NAME &optional EDGE X Y W
[Package    ]: editor
[Seealso    ]: delete-command-bar
[File       ]: cmdbar.l
[Section    ]: メニュー
[Description]: 
※以下は私見です。

ツールバーやタブバーを総称してツールバーと呼ぶようです。作成するときやツ
ールバーのリストを操作するときは全てtool-bar系の関数を使います。単に表示
するだけならば、show-tool-barを使えば可能です。

ただし、メニューの[表示]-[ツールバー]の一覧に追加する場合には、
command-bar系の関数を使います。define-command-barで登録したツールバーは、
[表示]-[ツールバー]から表示を制御することが可能です。予め、
define-command-barで定義したSYMに対応する、ツールバー・タブバーを作って
おく必要があります。

以下はタブバーを操作する場合の例です。

  (progn
    (defun a-func (a) (msgbox "~A ~A" a (type-of a)))
    (define-command-bar 'a-bar "a bar")
    (create-tab-bar 'a-bar 'a-func)
    (show-command-bar 'a-bar)
    (tab-bar-add-item 'a-bar '1st "- 1st -" "1st item")
    (tab-bar-add-item 'a-bar '2nd "- 2nd -" "2nd item"))

  (progn
    (tab-bar-delete-item 'a-bar '1st)
    (tab-bar-delete-item 'a-bar '2nd)
    (delete-tool-bar 'a-bar)
    (delete-command-bar 'a-bar))

また、ユーザのツールバーなどを作成する場合には、delete-command-barで削除
する手順を考慮することをおすすめします。コマンドバーは（シンボル名だけ）
ヒストリ変数に格納されます。その実体（ツールバーやタブバー）がなくとも、
ずっと[表示]-[ツールバー]に残ってしまいます。そのようなときは、手動で削
除する必要があります。

似たような話で、コマンドバーには関数名だけを指定しておいて、後から本体を
読み込みたい場合には、autoloadで出来ます。本体の初期化に時間が掛かる場合
には、このように分離するほうが良いと思います。

使用例：
  ------------------------------------------------
  ;;; .xyzzy
  (progn
    (define-command-bar 'a-bar "a bar")
    (autoload 'a-bar "a-bar.l"))
  ------------------------------------------------

  ------------------------------------------------
  ;;; a-bar.l
  (progn
    (create-tab-bar 'a-bar 'a-func)
    (show-command-bar 'a-bar)
    (tab-bar-add-item 'a-bar '1st "- 1st -" "1st item")
    (tab-bar-add-item 'a-bar '2nd "- 2nd -" "2nd item"))
  ------------------------------------------------


■define-history-variable
[Type       ]: Macro
[Arguments  ]: define-history-variable NAME &optional (INITIAL-VALUE nil sv) DOC
[Package    ]: editor
[Seealso    ]: unregister-history-variable
[File       ]: history.l
[Section    ]: 変数と定数
[Description]: 
ヒストリ変数を定義します。

  NAME          : ヒストリ変数名を指定します。
  INITIAL-VALUE : 初期値を設定します。
  DOC           : 変数の説明を指定します。

ヒストリ変数とは、次回のxyzzyの立ち上げまで値を保持してくれる(lispを書く
人には)便利な変数です。ヒストリ変数がないと各マクロごとに独自の保存方法
をとらないといけませんが、ヒストリ変数のおかげで宣言するだけで変数の状態
を保存することが可能な優れものです。

ただし、一旦作成したヒストリ変数はいつまでも残ってしまうので、
不要になったらed::*history-variable-list*を確認した上で、
unregister-history-variableで削除して下さい。

使用例：
  ;;; grepd.lより
  (define-history-variable *grep-directory-history* nil)
  (define-history-variable *grep-file-history* nil)


■define-key
[Type       ]: Function
[Arguments  ]: define-key KEYMAP KEY COMMAND
[Package    ]: editor
[Seealso    ]: undefine-key
[File       ]: builtin.l
[Section    ]: キーマップ
[Description]: 
キーマップのキーにコマンドを割り当てます。

  KEYMAP  : キーマップ
  KEY     : 登録するキー
  COMMAND : 実行するコマンド

使用例：
  ;;; Ctrl-X fのキー割り当てを変える
  (define-key ctl-x-map #\f 'my-find-file)
  => t 
  ;;; Esc-f のキー割り当てを変える
  (define-key esc-map #\f 'my-find-file)
  => t
  ;;; Ctrl-C aのキー割り当てを変える
  (define-key spec-map #\a 'my-find-file)
  => t


■define-menu
[Type       ]: Macro
[Arguments  ]: define-menu &body BODY
[Package    ]: editor
[Seealso    ]: define-popup-menu
[File       ]: menu.l
[Section    ]: メニュー
[Description]: 
固定的なメニューを定義します。
定義方法はdefine-popup-menuを参照して下さい。動的にメニューを生成した場
合にはcreate-menuを参照して下さい。define-menuで生成したメニューも
add-menu-itemやinsert-menu-itemなどで項目を追加することも可能です。


■define-popup-menu
[Type       ]: Macro
[Arguments  ]: define-popup-menu &body BODY
[Package    ]: editor
[File       ]: menu.l
[Section    ]: メニュー
[Description]: 
固定的なポップアップメニューを定義します。

  BODY : メニューの定義を記述します。

BODYをインチキなBNFで書くと以下の様になります。

  POPUP-DEF : {MENU-ITEM}*

  MENU-ITEM : :sep
            : (:sep [TAG])
            | (:separator [TAG])
            | (:popup tag name {POPUP-DEF}*)
            | (:item tag name [COMMAND [INIT]])

  TAG       : メニュー項目を識別する任意のオブジェクトです。
              タグ同士はeqで比較されます

  COMMAND   : メニュー項目が選択されたときに実行されるコマンドです。

  INIT      : メニューが開く直前に評価され、返される値によってメニューの
              状態が設定されます。任意のS式が指定できますが、あまり無茶
              なことはしないでください。式の値として意味のある値には以下
              のものがあります。

        :modified     カレントバッファが変更されていなければ灰色表示
        :undo         undo不可能であれば灰色表示
        :redo         redo不可能であれば灰色表示
        :selection    カレントバッファのテキストが未選択であるか矩形選択
                      であれば灰色表示
        :rectangle    カレントバッファのテキストが未選択であるか矩形以外
                      の選択であれば灰色表示
        :clipboard    クリップボードが空であれば灰色表示
        :check        チェック
        :disable      灰色表示
        その他        使用可能

使用例：
  ;;; niftylog.l
  (define-popup-menu
    (:item nil "メッセージを読んだことにする(&R)"
     'log-read-article)
    (:item nil "メッセージを読んでないことにする(&N)"
     'log-unread-article)
    (:item nil "スレッドを読んだことにする(&T)"
     'log-read-thread)
    (:item nil "スレッドを読んでないことにする(&H)"
     'log-unread-thread)
    (:item nil "ニュースグループを読んだことにする(&G)")
    (:item nil "ニュースグループを読んでないことにする(&P)"))
  => #<menu 48698340>


■defmacro
[Type       ]: Macro
[Arguments  ]: defmacro NAME (&rest LAMBDA-LIST) &body BODY
[Package    ]: lisp
[Seealso    ]: macroexpand , ``'(backquote)
[File       ]: evalmacs.l
[Section    ]: マクロ
[Description]: 
マクロを定義します。

使用例：
  ;;; cadrをマクロで定義し直した場合
  (defmacro cadr (x)
    (list 'car (list 'cdr x)))
  => cadr
  (macroexpand '(cadr y))
  => (car (cdr y))

参考：
  --- 亀井さんの説明 [xyzzy:03975] ---
  
  マクロは 2 回評価される関数みたいなものと思っていれば
  間違いないでしょう(ただし 1 回目の評価のときには引数の
  評価はされない)。ごく簡単な例をあげると、
  
    (defmacro foo ()
      '(+ 1 2))
  
  このように定義して (foo) を評価すると、1 回目の評価で
  (+ 1 2) が返り、それをさらに評価して 3 が返る、となり
  ます。引数がある場合も同様に、
  
    (defmacro bar (n)
      (list '+ 1 n))
  
    (bar 3)
    -> (+ 1 3)
    => 4
  
  となります。
  
  | (M (any1) (any2) (any3)) と呼び出すと、
  |     (progn
  |       (m-setup)
  |       (any1)
  |       (any2)
  |       (any3)
  |       (m-cleanup))
  | と呼ばれるのと同じよう動作するものはどうしたら良いですか？
  
  この場合、引数が 3 つなので、こうなります。
  
    (defmacro M (a b c)
      (list 'progn '(m-setup) a b c '(m-cleanup)))
  
    (M (any1) (any2) (any3))
    -> (progn (m-setup) (any1) (any2) (any3) (m-cleanup))
    => ?
  
  ふつ〜、引数は何個でもありだろうってなときは、通常の関
  数と同様に &rest で受けてやればいいわけですね。
  
    (defmacro M2 (&rest args)
      (append '(progn) '((m-setup)) args '((m-cleanup))))
  
    (M2 (any1) (any2) (any3))
    -> (progn (m-setup) (any1) (any2) (any3) (m-cleanup))
    => ?
  
  ちなみに、1 回目がどのように評価されているか(マクロの
  展開)を見るには macroexpand を使います。
  
    (macroexpand '(M2 (any1) (any2) (any3)))
    => (progn (m-setup) (any1) (any2) (any3) (m-cleanup))
  
  複雑なマクロ定義だと、list やら append やら cons やら 
  quote やらをごちゃごちゃ書くのがめんどくせ〜、というわ
  けでテンプレートを使うことができます。詳しい説明は面倒
  なのでしませんが(^^; 上の例をテンプレートを使って書く
  とこのようになります。
  
    (defmacro M (a b c)
      `(progn
         (m-setup)
         ,a ,b ,c
         (m-cleanup)))
  
    (defmacro M2 (&rest args)
      `(progn
         (m-setup)
         ,@args
         (m-cleanup)))


■defpackage
[Type       ]: Macro
[Arguments  ]: defpackage PACKAGE-NAME &rest OPTIONS
[Package    ]: lisp
[Seealso    ]: make-package , find-package , use-package , delete-package , in-package , package-name , package-nicknames , パッケージ
[File       ]: package.l
[Section    ]: パッケージ
[Description]: 
新しくパッケージを作ります。

  :internal-size  内部シンボルのハッシュサイズ
  :external-size  外部シンボルのハッシュサイズ

:internal-size 及び :external-size の大きさは、だいたい登録するシンボル
数の1/3ぐらいの値でいいでしょう。この値が足らないからといって、新しいシ
ンボルが登録できない訳ではないので、たいして気にする必要はないでしょう。
ハッシューがチェーンされて、検索(intern時のみ）がちょっと遅くなるだけで
す。こだわる方は素数を選ぶでしょう。

使用例：

  ;;; henmiというパッケージを作る。
  ;;; lisp, editorをuseしています。
  (defpackage "henmi"
     (:use "lisp" "editor")
     (:internal-size 200)
     (:external-size 10))

互換性:
  :internal-size, :external-size はcommonにはない。


■defstruct
[Type       ]: Macro
[Arguments  ]: defstruct NAME-AND-OPTIONS &rest REST
[Package    ]: lisp
[File       ]: struct.l
[Section    ]: 変数と定数
[Description]: 
構造体を定義します。C言語のstruct文に相当します。
オプションとして以下のものを指定できます。
以下、xxxx の部分には構造体名が入ります。

  :conc-name         通常、xxxx-スロット名 という名前を持つ関数で変数に
                     アクセスしますが、この名前を変更します。xxxx- 
                     の部分に相当する名前を指定します。
  :constructor       指定したコンストラクタを生成します。
                     複数の :constructor 宣言することができます。 引数には
                       コンストラクタ名 (変数名1 変数名2 ... 変数名n)
                     の様に指定します。&key や &optionalを使用したり、
                     スロットのデフォルト値とは異なるデフォルト値を指定できま
                     す。
                     コンストラクタを明示的に生成しても、xyzzyの場合、暗黙的な
                     コンストラクタが生成されてしまいますが、この動作はCLtL2の
                     示す動作と異なります。
                     これ以上の詳細は不明です。
  :copier            コピー関数名を指定したものに変更します。異なる動作をする
                     関数を指定できるわけではありません。
                     コピー関数は、新しい構造体オブジェクトを作ってスロットを
                     コピーします。新旧の構造体で各スロットは、同じオブジェク
                     トを共有します。
  :predicate         指定された構造体であるか否かを調べる関数名を指定します。
                     この名前を持つ述語をシステムが生成します。
                     デフォルトは、 xxxx-p です。
  :include           他の構造体名を指定することで、構造体を継承します。
                     継承した構造体にある変数の宣言が、この構造体でも宣言され
                     ているものとして扱われます。
                     これ以上の詳細は不明です。
  :print-function    オブジェクトを print する時に使われる関数を指定します。
                     format文などで ~A でオブジェクトをプリントする関数が変わ
                     ります。指定する関数は3つの引数をとり、順に オブジェクト、
                     ストリーム、（詳細不明）をとります。第3引数は、pretty print
                     に関する値が来ます。
                     :print-function が指定されない場合、 #S 構文でプリントさ
                     れます。
  :type              （詳細不明）
  :named             （詳細不明）
  :initial-offset    （詳細不明）

引数:
  NAME-AND-OPTIONS   オプションを指定しないときは構造体名、オプションを指定する
                     ときは、
                       (構造体名 (オプション名1 値1) (オプション名2 値2) ... )
                     の様に指定します。
  REST               構造体のスロットを指定します。スロット名のみを書くか、
                       (スロット名 デフォルト値 :type タイプ名 :read-only フラグ) 
                     の様に書いてひとつのスロットを定義します。 
                     :type と :read-only は、逆順にしても片方のみでも構いません。
                     リスト形式で書いた場合、後ろから順に省略できます。
                     タイプ名は、この構造体のオブジェクトであるかどうかを調べる
                     述語の生成に使うことができますが、xyzzy では使われていない
                     ようです。

特にオプション指定しないと make-xxxx, copy-xxxx, xxxx-p, xxxx-変数名 という関数
が作られるようです。 

  make-xxxx     デフォルトのコンストラクタ
  copy-xxxx     デフォルトのコピー関数
  xxxx-p        指定された構造体であるか否かを調べる関数
  xxxx-変数名   変数へのアクセス関数

定義：
  ;;; struct.lの定義
  (defmacro defstruct (name-and-options &rest rest)
    (eval-when (:compile-toplevel :load-toplevel :execute)
      (defstruct-helper name-and-options rest)))

使用例：
  ;;; FTPサーバを表す構造体の場合
  ;;; 初期値を予め指定することも可能
  (defstruct ftpsvr 
     anonymous hostname (port 80))
  => #<structure-definition: ftpsvr>
  (setq f1 (make-ftpsvr))
  => #S(ftpsvr anonymous nil hostname nil port 80)
  (setq f2 (make-ftpsvr  :anonymous t :hostname "ftp.world.com"))
  => #S(ftpsvr anonymous t hostname "ftp.world.com" port 80)
  (setq f3 #S(ftpsvr anonymous nil hostname "localhost"))
  => #S(ftpsvr anonymous nil hostname "localhost" port 80)

  ;;; 人を表す構造体の場合
  (defstruct person
     (name nil :type string)
     age
     (bloodtype "A"))
  => #<structure-definition: person>
  (setq p1 (make-person :name "Mike" :age 19))
  => #S(person name "Mike" age 19 bloodtype "A")
  (person-name p1)
  => "Mike"
  (setq p2 (copy-person p1))
  => #S(person name "Mike" age 19 bloodtype "A")
  (setf (person-bloodtype p1) "O")
  => "O"
  (person-bloodtype p1)
  => "O"
  (person-bloodtype p2)
  => "A"

  ;;; 患者を表す構造体の場合
  (defstruct (patient
             (:conc-name p-)
             (:print-function
              (lambda (o s p)
                (format s "<patient ~A ~D ~A>" (p-name o) (p-age o) (p-sicks o))))
              (:include person))
     (sicks nil :type (or nil list))
     id)
  => #<structure-definition: patient>
  (setq p3 (make-patient :name "Lucy" :age 18 :sicks '("かぜ")))
  => #S(patient name "Lucy" age 18 bloodtype "A" sicks ("かぜ") id nil)
  (format nil "~A" p3)
  => "<patient Lucy 18 (かぜ)>"


■defun
[Type       ]: Macro
[Arguments  ]: defun NAME (&rest LAMBDA-LIST) &body BODY
[Package    ]: lisp
[Seealso    ]: lambda
[File       ]: evalmacs.l
[Section    ]: 関数
[Description]: 
関数を定義します。

--- muleの説明 ---
defun は、新しく lisp 関数を定義する場合の(通常の)方法です。 defun は、 
symbol をこのフォームの残りの部分が示す関数の名前として定義します。 (こ
れは)このシンボルの関数セルが、 parameter-list と forms から作られるラム
ダ式 (lambda parameter-list . forms) を指すようにすることで行なわれます。
値セルは関数セルとは独立しているため、同じシンボルをグローバル変数として
用いてもかまいません。 

(上で述べたように) forms 中の最初の 2つのフォームは、ドキュメンテーショ
ンストリングや宣言であることができます。 defun は関数の再定義をチェック
してはいないため、 (car のような) primitive を何も知らせず(再)定義してし
まうことさえありえます。 defun は symbol を返します。 

  (defun foo () 5)
  => foo
  (foo)
  => 5
  (defun bar (a &optional b &rest c)
      (list a b c))
  => bar
  (bar 1 2 3 4 5)
  => (1 2 (3 4 5))
  (bar 1)
  => (1 nil nil)
  (bar)
  -> ERROR: Wrong number of arguments.
  (defun capitalize-backwards ()
      "This function makes the last letter of a word upper-case."
      (interactive)
      (backward-word 1)
      (forward-word 1)
      (backward-char 1)
      (capitalize-word 1))
  => capitalize-backwards


■defvar
[Type       ]: Macro
[Arguments  ]: defvar NAME &optional (INITIAL-VALUE () SV) DOC
[Package    ]: lisp
[File       ]: evalmacs.l
[Section    ]: 変数と定数
[Description]: 
グローバルなスペシャル変数を宣言します。ダイナミックなスコープを持ちます。

--- 以下muleの説明 ---

Special Form: defvar symbol [value [doc-string]]

この特殊フォームは、コードを読む人に対し、 symbol が変数として (通常)ロ
ーカルにバインドされずに用いられることを知らせます。 (通常) symbol には、
様々なプログラムで変更される値を与えます。 symbol は評価しません。 

上記の宣言に加え、 defvar は(この他に)いくつかの働きをします。 

オプショナルなアーギュメントを与えると、 defvar はアーギュメント var を
評価し、 symbol が(そうしなければ) unbound である場合、その結果を symbol
のグローバル値に設定します。 symbolがバインドされている場合、 value は評
価も行ないません。 

doc-string が存在する場合、それは、 (Emacs のヘルプシステムが見る) symbol 
のプロパティーリスト indicator (??)の variable-documentation の下に置か
れます。 doc-string の最初の文字が `*' である場合、この変数は (通常)ユー
ザーが変更を行なうユーザーオプションであるとされます。 user-variable-p 
がこれを見ます。 doc-string は評価されません。 

defvar はその値として symbol を返します。 

以下に示す最初の例では、(ユーザーに対し) foo を宣言します。このフォーム
は foo の値セルは設定しません。 2 番目のフォームは bar の値に 23 を設定
し、ドキュメンテーションストリングを与えます。 bar はユーザーオプション
ではありません。 4 番目のフォームは bar のドキュメンテーションストリング
を変更し、 bar をユーザーオプションにしますが、値は変えません(加算 (1+ 
23) は実行されません)。 

  (defvar foo)
  => foo
  (defvar bar 23 "The normal weight of a bar.")
  => bar
  (user-variable-p 'bar)
  => nil
  (defvar bar (1+ 23) "*The normal weight of a bar.")
  => bar
  bar
  => 23
  (user-variable-p 'bar)
  => t

次のフォームは、defvar に等価なものを示しています。 

  (defvar symbol value doc-string)
  ==
  (progn
    (if (not (boundp symbol))
        (setq symbol value))
    (put 'symbol 'variable-documentation 'doc-string)
    'symbol)


■defvar-local
[Type       ]: Macro
[Arguments  ]: defvar-local NAME INITIAL-VALUE &optional DOC
[Package    ]: editor
[Seealso    ]: make-local-variable , setq-default , local-variable-p , buffer-local-value , defvar
[File       ]: misc.l
[Section    ]: 変数と定数
[Description]: 
変数NAMEがバッファ毎に異なる値を持つようにします。関連する関数として、
defvar/make-local-variable等がありますが、それぞれ機能が異なります。
defvar-localはdefvarと異なり、スペシャル変数とはならないので注意が必要です。

  defvar              : スペシャル変数を作る。
  defvar-local        : 全バッファで変数が独自の値を持つようにする。
  make-local-variable : 特定のバッファで変数が独自の値を持つようにする。

また、defvar-localだけではその変数はローカル変数にはならないようです。バ
ッファでsetqをして初めてローカルになる（local-variable-pがtになる）よう
です。

使用例：
  ;;; defvarとdefvar-localを使ってダイナミックかレキシカルかを確認する。
  (defvar var 3)
  => var  
  (defvar-local var-local 3)
  => var-local
  
  (defun foo () (let ((var 4) (var-local 4)) (bar)))
  => foo
  (defun bar () (format nil "var : ~S, var-local : ~S" var var-local))
  => bar
  
  (foo)
  => "var : 4, var-local : 3"
(defvar-local *dabbrevs-case-fold* nil)


■delete
[Type       ]: Function
[Arguments  ]: delete ITEM SEQUENCE &key :from-end :test :test-not :start :end :count :key
[Package    ]: lisp
[Seealso    ]: remove
[File       ]: builtin.l
[Section    ]: シーケンス
[Description]: 
SEQUENCEの中でITEMと一致するものを削除したSEQUENCEを返します。
元のSEQUENCEは変更されます。元のSEQUENCEを保持したければ、removeを使うこと。

  :count    : 削除する文字数を制限します。
  :from-end : :countが指定された場合にのみ意味を持ちます。
         nil    SEQUENCEの先頭から削除します。
         t      SEQUENCEの後尾から削除します。

使用例：
  ;;; removeとdeleteを使ってみる。
  (setq foo "abcabcdef")        => "abcabcdef"
  (remove #\b foo)              => "acacdef"
  foo                           => "abcabcdef"
  (delete #\b foo)              => "acacdef"
  foo                           => "acacdef"


■delete-all-pseudo-frames
[Type       ]: Function
[Arguments  ]: delete-all-pseudo-frames &optional (CREATE-NEW t)
[Package    ]: editor
[Seealso    ]: フレームの概要 , delete-pseudo-frame
[File       ]: pframe.l
[Section    ]: ウィンドウ
[Description]: 
フレームをすべて削除します。

  CREATE-NEW : すべて削除した後に、新しいフレームを作るかどうか
        t        作る
        nil      作らない

各フレームごとにスロット deleted-fn に登録された関数が実行されます。


■delete-backward-char
[Type       ]: Function
[Arguments  ]: delete-backward-char &optional (N 1)
[Package    ]: editor
[Seealso    ]: delete-char
[File       ]: cmds.l
[Section    ]: テキスト
[Description]: 
カーソル後方の文字を指定文字数分だけ削除します。


■delete-backward-char-or-selection
[Type       ]: Function
[Arguments  ]: delete-backward-char-or-selection &optional (N 1)
[Package    ]: editor
[Seealso    ]: delete-char-or-selection
[File       ]: cmds.l
[Section    ]: テキスト
[Description]: 
セレクションがあればセレクション全体を、そうでなければカーソルの後方の
文字を削除します。[C-h]


■delete-blank-lines
[Type       ]: Function
[Arguments  ]: delete-blank-lines
[Package    ]: editor
[File       ]: cmds.l
[Section    ]: テキスト
[Description]: 
カーソルのある行またはその次の行の前後に続く空行を削除します。[C-x C-o]
複数の空行が続く場合は改行文字を一つだけ残します。

なお空行とは半角スペースおよびタブのみからなる行のことです。


■delete-buffer
[Type       ]: Function
[Arguments  ]: delete-buffer BUFFER
[Package    ]: editor
[Seealso    ]: *before-delete-buffer-hook* , *delete-buffer-hook* , kill-buffer
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
バッファを削除しますが、kill-bufferと違い対話的に削除するかどうかは聞き
ません。kill-bufferも内部的にはdelete-bufferを使っています。

delete-bufferでは以下の二つのフックが順番に実行されます。

  *before-delete-buffer-hook*
        delete-bufferを継続するかどうかを制御します。登録された関数が一
        つでもnilを返すとdelete-bufferを中止します。

  *delete-buffer-hook*
        delete-bufferされるバッファで何か処理を行う場合に使用します。


■delete-char
[Type       ]: Function
[Arguments  ]: delete-char &optional (N 1)
[Package    ]: editor
[File       ]: cmds.l
[Section    ]: テキスト
[Description]: 
指定文字数分だけ削除します。


■delete-char-or-selection
[Type       ]: Function
[Arguments  ]: delete-char-or-selection &optional (N 1)
[Package    ]: editor
[Seealso    ]: delete-char
[File       ]: cmds.l
[Section    ]: テキスト
[Description]: 
セレクションで選択中ならばセレクション全体を、そうでなければカーソルの位
置の文字を削除します。delete-charとはセレクション時の動作が異なります。


■delete-command-bar
[Type       ]: Function
[Arguments  ]: delete-command-bar SYM
[Package    ]: editor
[Seealso    ]: define-command-bar
[File       ]: cmdbar.l
[Section    ]: メニュー
[Description]: 
ツールバーを削除します。


■delete-directory
[Type       ]: Function
[Arguments  ]: delete-directory DIRNAME &key :if-does-not-exist :if-access-denied
[Package    ]: lisp
[Seealso    ]: delete-file , create-directory
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
ディレクトリを削除します。

  DIRNAME            : 削除するディレクトリ名を指定します。
  :if-does-not-exist : ディレクトリが存在しない場合の動作を指定します。
        :error          エラーを出力します。
        :skip           エラーは出力せず、nilを返します。
  :if-access-denied  : アクセスが拒否された場合の動作を指定します。
        :error          エラーを出力します。
        :skip           エラーは出力せず、nilを返します。
        :force          強制的に削除を試みます。

削除できたかどうかで戻り値が変わります。

  t   削除に成功
  nil 削除に失敗

使用例：
  (delete-directory "C:/xyzzy/testdir")
  => t


■delete-duplicates
[Type       ]: Function
[Arguments  ]: delete-duplicates SEQUENCE &key :from-end :test :test-not (:start 0) (:end (length SEQUENCE)) (:key #'identity)
[Package    ]: lisp
[Seealso    ]: delete , remove-duplicates
[File       ]: sequence.l
[Section    ]: シーケンス
[Description]: 
SEQUENCE の中から重複する要素を削除したシーケンスを返します。
delete 同様、元のシーケンスは変更されます。

 :from-end  non-nil ならシーケンスの終わりから重複する要素を削除していきます。


■delete-file
[Type       ]: Function
[Arguments  ]: delete-file FILE &key :if-does-not-exist :if-access-denied :recycle
[Package    ]: lisp
[Seealso    ]: delete-directory , rename-file , copy-file
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
ファイルを削除します。

  FILE               : 削除するファイル名を指定します。
  :if-does-not-exist : ファイルが存在しない場合の動作を指定します。
        :error          エラーを出力します。
        :skip           エラーは出力せず、nilを返します。
  :if-access-denied  : アクセスが拒否された場合の動作を指定します。
        :error          エラーを出力します。
        :skip           エラーは出力せず、nilを返します。
        :force          強制的に削除を試みます。

削除できたかどうかで戻り値が変わります。

  t   削除に成功
  nil 削除に失敗

使用例：  
  (delete-file "C:/xyzzy/test.txt")
  => t


■delete-file-in-archive
[Type       ]: Function
[Arguments  ]: delete-file-in-archive ARCHIVE-FILE &rest FILES
[Package    ]: editor
[Seealso    ]: create-archive , extract-archive
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
アーカイブから指定したファイルを削除します。

  ARCHIVE-FILE : アーカイブを指定します。
  FILES        : 削除するファイルを指定します。

使用例：
  ;;; c:/tmp/foo.lzh から xyz.c を削除します。
  (delete-file-in-archive "c:/tmp/foo.lzh" "xyz.c")


■delete-hook
[Type       ]: Function
[Arguments  ]: delete-hook HOOK FN
[Package    ]: editor
[Seealso    ]: add-hook
[File       ]: misc.l
[Section    ]: モード
[Description]: 
フック変数から関数を削除します。

  HOOK : フック変数のシンボルを指定します。
  FN   : 関数のシンボルを指定します。


■delete-horizontal-spaces
[Type       ]: Function
[Arguments  ]: delete-horizontal-spaces
[Package    ]: editor
[File       ]: cmds.l
[Section    ]: テキスト
[Description]: 
同一行内のカーソル位置の前後の空白を削除します。


■delete-if
[Type       ]: Function
[Arguments  ]: delete-if PREDICATE SEQUENCE &key :from-end :start :end :count :key
[Package    ]: lisp
[Seealso    ]: remove-if
[File       ]: builtin.l
[Section    ]: シーケンス
[Description]: 
SEQUENCEの中でPREDICATEを満たすものを削除します。


■delete-if-not
[Type       ]: Function
[Arguments  ]: delete-if-not PREDICATE SEQUENCE &key :from-end :start :end :count :key
[Package    ]: lisp
[Seealso    ]: remove-if-not
[File       ]: builtin.l
[Section    ]: シーケンス
[Description]: 
SEQUENCEの中でPREDICATEを満たさないものを削除します。


■delete-indentation
[Type       ]: Function
[Arguments  ]: delete-indentation &optional ARG
[Package    ]: editor
[File       ]: cmds.l
[Section    ]: 文字列
[Description]: 
インデントを削除し直前の行と連結します。
連結する行とされる行は、半角スペースで区切られます。

  ARG : 連結する行を指定します。
        t   次行のインデントを削除し、現在の行に連結します。
        nil 現在の行のインデントを削除し、直前の行に連結します。


■delete-last-ime-composition
[Type       ]: Function
[Arguments  ]: delete-last-ime-composition
[Package    ]: editor
[File       ]: kanji.l
[Section    ]: 文字列
[Description]: 
IME 変換直後であれば、直前に変換した文字列を削除します。[C-c C-d]


■delete-marker
[Type       ]: Function
[Arguments  ]: delete-marker MARKER
[Package    ]: editor
[Seealso    ]: unset-marker
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
マーカーを削除します。
オブジェクトはマーカーとして使えなくなります。
成功した場合 t、すでに削除されていた場合は nil を返します。

使用例：
  (delete-marker m)
  => t
  m
  => #<deleted-marker 128914348>


■delete-menu
[Type       ]: Function
[Arguments  ]: delete-menu MENU TAG-OR-POSITION &optional TAG-OR-POSITION-P
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: メニュー
[Description]: 
メニューから項目等を削除します。

  MENU              : 削除するメニューを指定します。
  TAG-OR-POSITION   : タグもしくは位置を指定します。
  TAG-OR-POSITION-P : TAG-OR-POSITIONの引数をタグとして解釈するか位置と
                      して解釈するかを決めます。
           nil     TAG-OR-POSITIONはタグを表すシンボル
           non-nil TAG-OR-POSITIONは位置を表す整数値
  
タグを指定した場合にはメニューを再帰的に検索し最初に見つかった項目を削除
します。 タグが存在しない場合やメニュー項目数以上の位置を指定した場合に
は、削除に失敗します。

戻り値は以下のとおりです。

  t   削除に成功した。
  nil 削除に失敗した。


■delete-other-windows
[Type       ]: Function
[Arguments  ]: delete-other-windows
[Package    ]: editor
[Seealso    ]: delete-window
[File       ]: builtin.l
[Section    ]: ウィンドウ
[Description]: 
現在カーソルがあるウィンドウ以外のウィンドウを削除します。
ただし、現在カーソルがあるウィンドウがミニバッファウィンドウの場合は他の
ウィンドウを削除しません。

戻り値：
  t     ウィンドウの削除に関わらず t 固定

補足：
  本関数はコマンドで、初期設定では C-x 1 にバインドされています。


■delete-package
[Type       ]: Function
[Arguments  ]: delete-package PACKAGE
[Package    ]: lisp
[Seealso    ]: make-package , defpackage , パッケージ
[File       ]: builtin.l
[Section    ]: パッケージ
[Description]: 
パッケージを削除します。

使用例：
  ;;; test 用パッケージを作る
  (defpackage "test")
  => #<package: test>
  (find-package "test")
  => #<package: test>
  ;;; test パッケージを削除する
  (delete-package "test")
  => t
  (find-package "test")
  => nil


■delete-pseudo-frame
[Type       ]: Function
[Arguments  ]: delete-pseudo-frame &optional (FRAME ed::*current-pseudo-frame*)
[Package    ]: editor
[Seealso    ]: フレームの概要 , new-pseudo-frame , delete-all-pseudo-frames
[File       ]: pframe.l
[Section    ]: ウィンドウ
[Description]: 
フレームを削除します。[C-x 6 0]
最後のひとつを削除した場合、即座に新しいフレームが作られます。

  FRAME : 削除するフレーム

FRAME のスロット deleted-fn に関数が設定されている場合、FRAME が削除される前に funcall されます。


■delete-rectangle
[Type       ]: Function
[Arguments  ]: delete-rectangle P1 P2
[Package    ]: editor
[Seealso    ]: kill-rectangle , delete-rectangle-selection , operate-on-rectangle
[File       ]: rectangl.l
[Section    ]: リージョン
[Description]: 
P1 と P2 で指定される矩形領域を削除します。


■delete-rectangle-selection
[Type       ]: Function
[Arguments  ]: delete-rectangle-selection
[Package    ]: editor
[Seealso    ]: kill-rectangle-selection , delete-rectangle , operate-on-rectangle-selection
[File       ]: select.l
[Section    ]: リージョン
[Description]: 
矩形選択されたセレクションの領域を削除します。


■delete-region
[Type       ]: Function
[Arguments  ]: delete-region FROM TO
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: リージョン
[Description]: 
指定された範囲を削除します。


■delete-text-attribute-point
[Type       ]: Function
[Arguments  ]: delete-text-attribute-point POINT
[Package    ]: editor
[Seealso    ]: delete-text-attributes
[File       ]: builtin.l
[Section    ]: テキスト
[Description]: 
POINT の位置のテキスト属性を削除します。
テキスト属性のうち POINT の位置を範囲に含むものを削除します。


■delete-text-attributes
[Type       ]: Function
[Arguments  ]: delete-text-attributes TAG &key :test :test-not :key
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: テキスト
[Description]: 
set-text-attributeで指定したタグの属性を消します


■delete-text-attributes-if
[Type       ]: Function
[Arguments  ]: delete-text-attributes-if TEST &key :key
[Package    ]: editor
[Seealso    ]: delete-text-attributes-if-not , delete-text-attributes
[File       ]: builtin.l
[Section    ]: テキスト
[Description]: 
テキスト属性のうち、タグが TEST を満たすものをすべて削除します。


■delete-text-attributes-if-not
[Type       ]: Function
[Arguments  ]: delete-text-attributes-if-not TEST &key :key
[Package    ]: editor
[Seealso    ]: delete-text-attributes-if , delete-text-attributes
[File       ]: builtin.l
[Section    ]: テキスト
[Description]: 
テキスト属性のうち、タグが TEST を満たさないものをすべて削除します。


■delete-tool-bar
[Type       ]: Function
[Arguments  ]: delete-tool-bar NAME
[Package    ]: editor
[Seealso    ]: create-tool-bar
[File       ]: builtin.l
[Section    ]: メニュー
[Description]: 
ツールバーNAMEを削除します。
コマンドバーとして登録していた場合には、[表示]-[ツールバー]に残骸が残っ
てしまいますので、delete-command-barで削除する必要があります。


■delete-trailing-spaces
[Type       ]: Function
[Arguments  ]: delete-trailing-spaces
[Package    ]: editor
[File       ]: cmds.l
[Section    ]: テキスト
[Description]: 
ポイント後方の連続するスペースを削除します。


■delete-window
[Type       ]: Function
[Arguments  ]: delete-window
[Package    ]: editor
[Seealso    ]: set-window , delete-other-windows , minibuffer-window-p , delete-buffer , deleted-buffer-p
[File       ]: builtin.l
[Section    ]: ウィンドウ
[Description]: 
現在カーソルがあるウィンドウを削除します。
ミニバッファウィンドウは削除できません。
また、ミニバッファウィンドウ以外のウィンドウが現在のウィンドウのみの場合
は simple-error を発生します。

ウィンドウ削除後は、以下の条件のうち、最も優先度の高い条件を満たすミニ
バッファウィンドウ以外のウィンドウの領域を広げ、そのウィンドウを
set-window します。
  1. 削除ウィンドウの左辺と、右辺が一致したウィンドウ
  2. 削除ウィンドウの右辺と、左辺が一致したウィンドウ
  3. 削除ウィンドウの上辺と、底辺が一致したウィンドウ
  4. 削除ウィンドウの底辺と、上辺が一致したウィンドウ

戻り値：
  t     ウィンドウ削除成功
  nil   ウィンドウ削除失敗

補足：
  本関数はコマンドで、初期設定では C-x 0 にバインドされています。
  
  xyzzy 0.2.2.233 では (delete-buffer X) に対して (deleted-buffer-p X)
  が存在しますが、(delete-window X) に対して (deleted-window-p X) は存在
  しません。
  ;;; deleted-buffer-p を模した deleted-window-p の定義
  (in-package "editor")
  (export '(deleted-window-p))
  (defun deleted-window-p (window)
    (unless (windowp window)
      (error 'lisp::type-error :datum window :expected-type 'window))
    (handler-case
        (progn
          (window-buffer window)
          t)
      (program-error (c)
        nil)))


■deleted-buffer-p
[Type       ]: Function
[Arguments  ]: deleted-buffer-p BUFFER
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
バッファが削除されているかどうかを調べます。
BUFFERにはバッファ型のものしか指定できません。

  t   指定されたバッファは既に削除されています。
  nil 指定されたバッファは未だ削除されていません。


■denominator
[Type       ]: Function
[Arguments  ]: denominator RATIONAL
[Package    ]: lisp
[Seealso    ]: numerator
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
分数の分母を返します。


■describe-function
[Type       ]: Function
[Arguments  ]: describe-function SYMBOL
[Package    ]: editor
[Seealso    ]: describe-variable
[File       ]: help.l
[Section    ]: シンボル
[Description]: 
指定された関数の引数と docstring を表示します。


■describe-key
[Type       ]: Function
[Arguments  ]: describe-key KEY
[Package    ]: editor
[File       ]: help.l
[Section    ]: キーマップ
[Description]: 
指定したキーにバインドされた関数と docstring を表示します。


■describe-key-briefly
[Type       ]: Function
[Arguments  ]: describe-key-briefly KEY &optional ARG
[Package    ]: editor
[Seealso    ]: describe-key
[File       ]: help.l
[Section    ]: キーマップ
[Description]: 
指定したキーにバインドされた関数を表示します。[C-x ?]

  KEY : 検索するキー
  ARG : 出力(表示)先をどこにするか
        nil     : ステータスバーに表示
        non-nil : バッファに「キー (関数名)」のフォーマットで文字列を出力


■describe-variable
[Type       ]: Function
[Arguments  ]: describe-variable SYMBOL
[Package    ]: editor
[Seealso    ]: describe-function
[File       ]: help.l
[Section    ]: シンボル
[Description]: 
指定された変数の現在の値、種類(constant or special)および docstring を表
示します。


■detect-char-encoding
[Type       ]: Function
[Arguments  ]: detect-char-encoding STRING-OR-STREAM
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: テキスト
[Description]: 
STRING-OR-STREAM の文字エンコーディングを判定します。


■dialog
[Type       ]: Function
[Arguments  ]: dialog X Y W H &rest CONTROLS
[Package    ]: lisp
[Seealso    ]: dialog-box
[Section    ]: ダイアログ
[Description]: 
ダイアログを定義します。

  X Y      : ダイアログの表示位置を指定します。
  W H      : ダイアログの大きさを指定します。
  CONTROLS : コントロールを指定します。

コントロールをxyzzyで作成するのは面倒なので、VisualC++のリソース作成画面
で、部品を配置して変換する方法が用意されています。新しくバッファを作って 
*.rcファイルから必要な部分を持ってきた後で、

  M-x convert-dialog-template-buffer

バッファ名を選択するとlisp形式に変換されます。


■dialog-box
[Type       ]: Function
[Arguments  ]: dialog-box TEMPLATE INITIAL-VALUE CHECK-OR-DISABLE
[Package    ]: editor
[Seealso    ]: dialog
[File       ]: builtin.l
[Section    ]: ダイアログ
[Description]: 
ダイアログボックスを表示します。ダイアログはdialogで定義されたものを使います。

  TEMPLATE :
      lispの形式で記述されたダイアログテンプレートを指定します。
      詳細は、関数dialogを参照してください。

  INITIAL-VALUE :
      エディトボックス等に入れる、文字列などを指定します。
      特に指定しない場合はnilでもかまいません。

  CHECK-OR-DISABLE :
      チェックボックス等の初期選択状態を指定します。
      特に指定しない場合はnilでもかまいません。

戻り値は、多値なので、multiple-value-bind等で受け取る必要があります。1番
目の戻り値は、cancelボタンが押されたらnil、okボタンが押されたらtが返ります。
  
使用例：
  ;;; テスト用のダイアログを定義します。
  (setq *test-dialog-template*
    `(dialog 0 0 300 100 
             (:caption "について")
             (:font 9 "ＭＳ Ｐゴシック")
             (:control
              (:static nil nil #x50020003 7 7 18 21)
              (:static nil ,(concat "XYZZY version "
                                    (software-version))
               #x50020000 34 7 92 8)
              (:static nil "Copyright (C) 1996, 97 T.Kamei"
               #x50020000 34 17 92 8)
              (:button IDOK "OK" #x50010001 52 35 36 14))))

  ;;; テスト用のダイアログを表示します。
  (defun test-dialog ()
    (interactive)
    (dialog-box *test-dialog-template* nil nil)
    t)


■digit-argument
[Type       ]: Function
[Arguments  ]: digit-argument RAW &optional ARG
[Package    ]: editor
[File       ]: cmds.l
[Section    ]: 関数
[Description]: 
後に続くコマンドに前置引数を渡します。[ESC 0 ... ESC 9]


■digit-char
[Type       ]: Function
[Arguments  ]: digit-char WEIGHT &optional (RADIX 10)
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 文字
[Description]: 
RADIX を基数とした場合の WEIGHT の表示上の文字を返します。
下の例ですと、 (digit-char 12 16) は16進表記した場合の12は、
#\C になります。WEIGHT が RADIX 以上になると nil が返ります。

使用例：
  (digit-char 7)
  => #\7
  (digit-char 12)
  => nil
  (digit-char 12 16)
  => #\C
  (digit-char 6 2)
  => nil
  (digit-char 1 2)
  => #\1


■digit-char-p
[Type       ]: Function
[Arguments  ]: digit-char-p CHAR &optional (RADIX 10)
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 文字
[Description]: 
CHAR が数字ならその数字の10進表現での値を、そうでなければ nil を返します。

  RADIX : 基数

使用例：  
  (digit-char-p #\1)
  => 1
  (digit-char-p #\a)
  => nil
  (digit-char-p #\a 16)
  => 10
  (digit-char-p #\RET)
  => nil


■ding
[Type       ]: Function
[Arguments  ]: ding
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: その他
[Description]: 
音を鳴らします？（詳細不明）

使用例：
  ;;; 音を鳴らす。
  (ding)
  => t


■directory
[Type       ]: Function
[Arguments  ]: directory PATHNAME &key :absolute :recursive :wild :depth :file-only :show-dots :count :directory-only :callback :file-info
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
対象ディレクトリ下のファイル名をリストで得ます。

  PATHNAME        : 検索するディレクトリのパスです。
  :absolute       : 検索結果をフルパスで取得します。
  :recursive      : サブディレクトリも対象とするかを制御します。
        t               サブディレクトリの中まで検索
        nil             サブディレクトリの中までは検索しない
  :wild           : ワイルドカード指定です。リストでも可です。
  :depth          : :recursive 指定するときの再帰の深さです。
  :file-only      : ファイルしか検索しません。
  :show-dots      : ディレクトリとして"./"と"../"を加えます。
  :count          : 表示されるファイルの個数を制限します。
  :directory-only : ディレクトリしか検索しません。
  :callback       : 見つかったファイルを引数にして funcall します。
                    funcall した結果をリストにして返します。
  :file-info      : ファイルの属性を取得します。
                    get-file-info で取得できるものと同じです。

使用例：
  ;;;  "../"は出したいけど、"./"を出したくない場合
  (delete "./" (directory ... :show-dots t) :test #'string=)

  ;;; "C:/"の配下を一覧表示する。
  (directory "C:/" :callback #'(lambda (x) (print x)))

  ;;; ファイル名のソート（大文字小文字区別有り）
  (sort (directory ...) #'string<)

  ;;; ファイル名のソート（大文字小文字区別有り）
  (sort (directory ...) #'string-lessp)


■directory-name-dialog
[Type       ]: Function
[Arguments  ]: directory-name-dialog &key :title :default
[Package    ]: editor
[Seealso    ]: read-directory-name
[File       ]: builtin.l
[Section    ]: ダイアログ
[Description]: 
ディレクトリを指定するダイアログを表示します。
ユーザーが指定したディレクトリを返します。
  
  :title   : ダイアログのタイトル
  :default : 初期表示するディレクトリ

使用例：
  ;;; ミニバッファからディレクトリ名を読み取る。
  (directory-name-dialog)
  => "C:/applications/xyzzy/site-lisp"


■directory-namestring
[Type       ]: Function
[Arguments  ]: directory-namestring PATHNAME
[Package    ]: lisp
[Seealso    ]: pathname-directory , file-namestring
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
PATHNAMEのディレクトリ部分を返します。

使用例：  
  (directory-namestring "C:/xyzzy/xyzzy.exe")
  => "C:/xyzzy/"
  (directory-namestring "~/test.txt")
  => "C:/HOME/"
  (directory-namestring "/usr/local/bin")
  => "C:/usr/local/"


■display-first-tab-char
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: display-rest-tab-char
[File       ]: defs.l
[Section    ]: 文字
[Description]: 
タブの表示に使用する文字を設定します。最初の文字は
display-first-tab-charで設定し、以降の文字は
display-rest-tab-charで設定します。
xyzzy 0.2.2.215〜

使用例：
  (setq-default display-first-tab-char #\rightwards_arrow_to_bar)
  (setq-default display-rest-tab-char nil)


■display-newline-char
[Type       ]: Variable
[Package    ]: editor
[File       ]: defs.l
[Section    ]: 文字
[Description]: 
改行の表示に使用する文字を設定します。
  半角文字  指定した文字で表示
  nil       空白で表示
  上記以外  従来の文字で表示

使用例：
  (setq-default display-newline-char #\downwards_arrow_with_tip_leftwards)


■display-rest-tab-char
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: display-first-tab-char
[File       ]: defs.l
[Section    ]: 文字
[Description]: 
タブの表示に使用する文字を設定します。
詳しくは display-first-tab-char を参照してください。


■do
[Type       ]: Macro
[Arguments  ]: do (&rest VARLIST) (&optional END-TEST &rest RESULT) &body BODY
[Package    ]: lisp
[File       ]: evalmacs.l
[Section    ]: 制御構造
[Description]: 
(do ((var1 init1 step1)
     (var2 init2 step2)
            ...
     (varm initm stepm))
    (end-test result1 result2 ... resultm) 
   declaration1
       ...
   declarationN)

(do ((<変数1> <初期値1> <ステップ1>)
     (<変数2> <初期値2> <ステップ2>)
              ...
     (<変数m> <初期値m> <ステップm>))
    (<<終了条件> <後式1> ... <後式p>) 
   <式1>
   ...
   <式n>)


<変数1>〜<変数m>までを局所変数とし，<終了条件>が真
になるまでdo式本体の<式1>〜<式n>を繰り返し実行する。<
変数1>〜<変数m>までは変数を表す記号で，do式の中で局所的に使
われる変数を指定する。do式が評価されるときは，まず<初期値1>〜
<初期値m>までが評価され，その値が各局所変数にバインドされる。そ
の後で，<終了条件>が評価され，もし値がnilであれば本体を実行する。
次に<ステップ1>〜<ステップm>までを評価してその値を各局所
変数に代入してから<終了条件>を評価する。これを<終了条件>
の値がnil以外になるまで繰り返す。<終了条件>の値がnil以外になっ
たら，<終了条件>に続く<後式1>〜<後式p>を評価し，そ
の最後の式の値をdo式の値とする。

do式の一般形は，

(block nil
  (let ((<変数1> <初期値1> <ステップ1>)
        (<変数2> <初期値2> <ステップ2>)
                 ...
        (<変数m> <初期値m> <ステップm>))
    (tagbody
      loop
      (when <終了条件>
        (return (progn <後式1> ... <後式p>)))
      <式1>
      ...
      <式n>
     (psetq <変数1> <ステップ1>
              ...
            <変数m> <ステップm>)
      (go loop))))

と同値である。(loop というタグは他では使われていないものとする)


■do*
[Type       ]: Macro
[Arguments  ]: do* (&rest VARLIST) (&optional END-TEST &rest RESULT) &body BODY
[Package    ]: lisp
[Seealso    ]: do , let , let*
[File       ]: evalmacs.l
[Section    ]: 制御構造
[Description]: 
doと同じようにループ処理を行う。
doとだいたい同じだけど、letとlet*の違いのように、局所変数の初期化と更
新の方法にある。doはletを使って局所変数を初期化しているため、全ての初
期値を計算してから局所変数をバインドするが，do*ではletの代わりにlet*
が使われている。またpsetqのかわりにsetqを使う。

do*式の一般形は、

(block nil
  (let* ((<変数1> <初期値1> <ステップ1>)
         (<変数2> <初期値2> <ステップ2>)
                  ...
         (<変数m> <初期値m> <ステップm>))
    (tagbody
      loop
      (when <終了条件>
        (return (progn <後式1> ... <後式p>)))
      <式1>
      ...
      <式n>
     (setq <変数1> <ステップ1>
              ...
           <変数m> <ステップm>)
      (go loop))))

と同値である。(loop というタグは他では使われていないものとする)


■do-all-symbols
[Type       ]: Macro
[Arguments  ]: do-all-symbols (VAR &optional RESULT-FORM) &body BODY
[Package    ]: lisp
[Seealso    ]: with-package-iterator
[File       ]: package.l
[Section    ]: パッケージ
[Description]: 
全シンボルを列挙します。

  VAR         : 列挙されたシンボルを格納する変数名を指定します。
  RESULT-FORM : （詳細不明）
  BODY        : 実行するフォームを指定します。

使用例：
  ;;; シンボルを列挙して変数・関数・マクロ・パッケージを出力してみる。
  (do-all-symbols (sym)
    (and (or (boundp sym)
             (fboundp sym))
         (format t "~:[ ~;V~]~:[ ~;F~]~:[ ~;M~] ~A ~S~%"
                 (boundp sym)
                 (fboundp sym)
                 (macro-function sym)
                 (package-name (symbol-package sym))
                 sym)))


■do-completion
[Type       ]: Function
[Arguments  ]: do-completion FROM TO TYPE &optional COMPL WORD LAST-CHAR (POPUP-P *POPUP-COMPLETION-LIST-DEFAULT*)
[Package    ]: editor
[File       ]: complete.l
[Section    ]: テキスト
[Description]: 
テキストの補完をします。
詳細は*do-completionを参照して下さい。

使用例：
  ;;; カーソルの直前のパスを補完します。
  (do-completion (point) 
                 (progn (skip-syntax-spec-backward "^ ") (point))
                 :file-name)


■do-events
[Type       ]: Function
[Arguments  ]: do-events
[Package    ]: lisp
[Seealso    ]: refresh-screen , sit-for , sleep-for
[File       ]: builtin.l
[Section    ]: その他
[Description]: 
長い処理の途中に、Windowsのイベントを処理してあげるおまじないらしい。

使用例：
  ;;; イベント処理をしてみる。
  (do-events)
  => nil


■dolist
[Type       ]: Macro
[Arguments  ]: dolist (VAR LISTFORM &optional (RESULTFORM ''())) &body BODY
[Package    ]: lisp
[File       ]: evalmacs.l
[Section    ]: 制御構造
[Description]: 
リストの長さ分だけ繰り返しを行います。

  (dolist (<変数> <リスト式> <値>)
    <式1> ... <式n>)

まず<リスト式>を評価する。その後リストの要素ごとに変数をその要素に
バインドして，本体の<式1>〜<式n>までを評価する。本体式の評価
が全ての要素に対して終わると，<値>を評価し，dolistの値として返す。
また<値>は省略でき，その場合はdolistの値はnilである。

dolist式の一般形は，
  
  (do* ((temp <リスト式> (cdr temp))
        (<変数> (car temp) (car temp)))
      ((endp temp) <値>)
    <式1>
    ...
    <式n>)
  
と同値である。

使用例：
  (let ((result nil))
    (dolist (item '("Lois" "Charley" "David") (nreverse result))
      (push (length item) result))))
  => (4 7 5)


■DOSのコマンドをキックして結果を文字列にするには？
[Type       ]: Tips
[Section    ]: その他
[Description]: 
| DOSのコマンド(コンソールアプリって言ったほうがいいのかな？）
| をキックして、結果を文字列として、取り出す事はできますか？

こんな感じでしょうか。

(defun command-substitution (command)
  (let ((outfile nil)
        (buffer nil))
    (unwind-protect
        (save-excursion
          (setq buffer (create-new-buffer "*foo*"))
          (setq outfile (make-temp-file-name))
          (call-process command :output outfile :show :hide :wait t)
          (set-buffer buffer)
          (insert-file-contents outfile)
          (goto-char (1- (point-max)))
          (when (looking-for "\n")
            (delete-char 1))
          (goto-char (point-min))
          (replace-buffer "\n+" " " :regexp t)
          (buffer-substring (point-min) (point-max)))
      (and buffer
           (delete-buffer buffer))
      (and outfile
           (delete-file outfile)))))


■dotimes
[Type       ]: Macro
[Arguments  ]: dotimes (VAR COUNTFORM &optional (RESULTFORM ''())) &body BODY
[Package    ]: lisp
[File       ]: evalmacs.l
[Section    ]: 制御構造
[Description]: 
(dotimes (<変数> <整数式> <値>)
  <式1> ... <式n>)

指定された回数だけ繰り返しを行う。

まず<整数式>を評価する。その値をnとすると，0〜n-1までのそれぞれの
整数値に対して，<変数>をその整数値にバインドして，本体の<式1>
〜<式n>までを評価する。すなわち本体式はn回繰り返される。本体式の評
価がn回繰り返されると，<値>を評価し，dotimesの値として返す。
また<値>は省略でき，その場合はdotimesの値はnilである。

dotimes式の一般形は，

(do* ((temp <整数式>)
      (<変数> 0 (1+ <変数>)))
    ((>= <変数> temp) <値>)
  <式1>
  ...
  <式n>)

と同値である。


■double-float-p
[Type       ]: Function
[Arguments  ]: double-float-p OBJECT
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
OBJECT が double-float なら t 、それ以外なら nil を返します。


■down-list
[Type       ]: Function
[Arguments  ]: down-list &optional ARG NO-ERRORS
[Package    ]: editor
[Seealso    ]: up-list
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
カーソルを前方にある ARG 個内側の括弧の後ろに移します。

  (setq lst '(a b c)) ; ここから
       ^
  (setq lst '(a b c)) ; ここへ
              ^

前方に括弧が見つからなかった場合、
NO-ERRORS が nil の場合にはエラーを、 t の場合には nil を返します。
また、直近にある括弧しか見つけられないようです。

  (defun test () (setq lst '(a b c))) ; ここから ARG = 2 で down-list すると
     ^                                ; エラーになる


■downcase-region
[Type       ]: Function
[Arguments  ]: downcase-region FROM TO
[Package    ]: editor
[Seealso    ]: capitalize-region , upcase-region
[File       ]: builtin.l
[Section    ]: リージョン
[Description]: 
リージョン内の単語を小文字にします。


■downcase-word
[Type       ]: Function
[Arguments  ]: downcase-word &optional (ARG 1)
[Package    ]: editor
[Seealso    ]: downcase-region , upcase-word
[File       ]: cmds.l
[Section    ]: 文字列
[Description]: 
カーソル位置から単語の末尾までを小文字に変換します。


■drive-dialog
[Type       ]: Function
[Arguments  ]: drive-dialog &optional DRIVE
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ダイアログ
[Description]: 
ドライブ選択のダイアログを表示します。DRIVEで初期表示するドライブを選択
できます。選択したドライブのドライブ文字がキャラクタで返されます。

使用例：
  (drive-dialog)
  => #\R


■dump-xyzzy
[Type       ]: Function
[Arguments  ]: dump-xyzzy &optional FILENAME
[Package    ]: editor
[Seealso    ]: version-up-xyzzy
[File       ]: builtin.l
[Section    ]: システム
[Description]: 
ダンプファイルをFILENAMEにして作成します。
既に作成されていても上書きします。
FILENAME省略時のファイル名は？（未確認）


■echo-stream-input-stream
[Type       ]: Function
[Arguments  ]: echo-stream-input-stream ECHO-STREAM
[Package    ]: lisp
[Seealso    ]: make-echo-stream
[File       ]: builtin.l
[Section    ]: 入出力
[Description]: 
make-echo-streamで作られたECHO-STREAMの入力元のストリームを返します。


■echo-stream-output-stream
[Type       ]: Function
[Arguments  ]: echo-stream-output-stream ECHO-STREAM
[Package    ]: lisp
[Seealso    ]: make-echo-stream
[File       ]: builtin.l
[Section    ]: 入出力
[Description]: 
make-echo-streamで作られたECHO-STREAMの出力先のストリームを返します。


■ed::*last-search-regexp*
[Type       ]: Variable
[Package    ]: editor
[Section    ]: 検索・正規表現
[Description]: 
前回の正規表現検索パターンが保存されています。


■ed::*last-search-string*
[Type       ]: Variable
[Package    ]: editor
[File       ]: search.l
[Section    ]: 検索・正規表現
[Description]: 
前回の検索語が保存されています。


■ed::*register-alist*
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: ed::get-register , ed::set-register
[File       ]: register.l
[Section    ]: 変数と定数
[Description]: 
レジスタに格納されている値を保持する変数。
中身は (name . datum) の形の連想リストです。
emacs と違い name にはどんな文字でも入るようです。

datum としては(通常は)以下のものが使用できます。
  マーカー
  文字列
  矩形領域(文字列のリスト)
  window configuration


■ed::build-summary-function
[Type       ]: BufferLocal
[Package    ]: editor
[Seealso    ]: list-function
[Section    ]: 関数
[Description]: 
バッファ中の関数の一覧を取得します。行及び関数名を要素に持つリス
トで得られます。list-functionで使用されています。

使用例：
  ; listfn.lで評価
  (funcall ed::build-summary-function)
  => ((10 "lisp-build-summary-of-functions") (39 "lisp-maketags"))


■ed::find-file-internal
[Type       ]: Function
[Arguments  ]: find-file-internal FILENAME &optional NOWARN (KANJI-CODE nil SVAR) NEWLINE-CODE NOMSG
[Package    ]: editor
[Seealso    ]: find-file
[File       ]: files.l
[Section    ]: ファイルシステム
[Description]: 
ファイルを開きます。find-fileはfind-file-internalを用いて実装されています。
find-fileは複数のファイルを開く機能がありますが、一つのファイルを開くの
であれば、こちらの方が高速です。

  FILENAME : ファイル名


■ed::get-register
[Type       ]: Function
[Arguments  ]: get-register R
[Package    ]: editor
[Seealso    ]: ed::set-register
[File       ]: register.l
[Section    ]: その他
[Description]: 
レジスタ R の値を返します。何も入ってない場合の戻り値は nil です。


■ed::get-selection-start-end
[Type       ]: Function
[Arguments  ]: get-selection-start-end
[Package    ]: editor
[File       ]: select.l
[Section    ]: ポジション
[Description]: 
セレクションの開始位置と終了位置を多値で返します。
ただし、矩形選択状態ではnilを返します。


■ed::map-selection
[Type       ]: Function
[Arguments  ]: map-selection FN
[Package    ]: editor
[File       ]: select.l
[Section    ]: ポジション
[Description]: 
セレクションの開始位置と終了位置を引数にして関数を呼び出します。

  FN : 呼び出す関数を指定します。呼び出し時には開始位置と終了位置を渡し
       ますので、そのような関数のI/Fにしておかなければなりません。

使用例：
  ;;;
  (defun map-test ()
    (interactive)
    (ed::map-selection #'(lambda (start end) (message (format nil "~s ~s" start end)))))

補足：
  editorパッケージからエクスポートされてないので、ed::をつける必要があります。
  選択の開始位置と終了位置を正確に渡すので、前後関係に注意して下さい。


■ed::pseudo-frame
[Type       ]: Struct
[Package    ]: editor
[Seealso    ]: new-pseudo-frame , select-pseudo-frame , delete-pseudo-frame , *select-pseudo-frame-hook*
[Link       ]: http://xyzzy.s53.xrea.com/qanda/wiki.cgi?p=e1d59f7af8a5ebd071340560b6ed41a2 , http://xyzzy.s53.xrea.com/wiki/index.php?QuickTour%2Fframe
[File       ]: pframe.l
[Section    ]: ウィンドウ
[Description]: 
フレームは pseudo-frame という構造体として、pframe.l 内で定義されています。
この構造体は以下のようなスロットを持っています。
  name        : フレームの名前
  winconf     : このフレームにおけるウィンドウの状態
  save-p      : セッション保存時にこのフレームを保存するかどうか
  selected-fn : このフレームを選択したときに実行される関数
  deleted-fn  : このフレームを削除するときに実行される関数

フレームを新しく作成するには new-pseudo-frame を使えばよく、
winconf 以外のスロットは new-pseudo-frame の引数として指定できます。
winconf はフレーム作成時や移動時に自動的に設定されます。

selected-fn および delete-fn に設定された関数は funcall によって呼び出されます。
*select-pseudo-frame-hook* と異なり、フレームごとに異なる関数を割り当てることができます。
また、selected-fn の関数は *select-pseudo-frame-hook* より先に実行されます。


■ed::set-register
[Type       ]: Function
[Arguments  ]: set-register R VALUE
[Package    ]: editor
[Seealso    ]: ed::get-register
[File       ]: register.l
[Section    ]: その他
[Description]: 
レジスタ R に値 VALUE を格納します。


■ed::toggle-mode
[Type       ]: Function
[Arguments  ]: toggle-mode VAR ARG SV
[Package    ]: editor
[File       ]: cmds.l
[Section    ]: モード
[Description]: 
マイナーモードの状態を表す変数VARを設定します。
SVがnilならば状態は反転します。
ARGが負数もしくはnilならば無効になります。
ARGが非負数値もしくはnon-nilならば有効になります。


■eighth
[Type       ]: Function
[Arguments  ]: eighth X
[Package    ]: lisp
[Seealso    ]: nth
[File       ]: list.l
[Section    ]: リスト
[Description]: 
list の 8 番目の要素を返します。

  (eighth X) = (nth 7 X)

使用例：
  (eighth '(1 2 3 4 5 6 7 8 9 0))
  => 8


■eject-media
[Type       ]: Function
[Arguments  ]: eject-media DRIVE
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
DRIVEに指定したドライブをイジェクトします。
DRIVEはキャラクタで指定します。
使用例：
  (setq a (merge-pathnames "xyzzy.exe" (si:system-root)))
  =>"C:/Applications/xyzzy/xyzzy.exe"
  
  (eject-media (svref a 0)) ; イジェクト不可能なドライブ
  =>指定されたデバイス名は無効です。 

  (eject-media #\P)
  =>t
(svref (default-directory) 0))


■elt
[Type       ]: Function
[Arguments  ]: elt SEQUENCE INDEX
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: シーケンス
[Description]: 
SEQUENCEのINDEX番目の要素を返します。
INDEXは0を基底とします。なければnilを返します。


■Emacs 互換ではない正規表現は結構あるのでしょうか？
[Type       ]: Tips
[Section    ]: 検索・正規表現
[Description]: 
\'  \`  \=  \c  \C これだけです。


■enable-post-buffer-modified-hook
[Type       ]: Function
[Arguments  ]: enable-post-buffer-modified-hook ENABLE &optional BUFFER
[Package    ]: editor
[Seealso    ]: post-buffer-modified-hook-enabled-p , post-buffer-modified-hook
[File       ]: builtin.l
[Section    ]: 変数と定数
[Description]: 
post-buffer-modified-hookを有効にします。
[xyzzy:06354]を参照
xyzzy 0.2.1.186〜


■encode-universal-time
[Type       ]: Function
[Arguments  ]: encode-universal-time SECOND MINUTE HOUR DAY MONTH YEAR &optional TIME-ZONE
[Package    ]: lisp
[Seealso    ]: decode-universal-time , format-date-string
[File       ]: builtin.l
[Section    ]: 日付・時間
[Description]: 
日時からユニバーサルタイム形式の時間に変換します「1900年1月1日0時0分0秒
から指定された日時まで秒数」をユニバーサルタイム形式の時間と呼びます。

  SECOND    : 秒数
  MINUTE    : 分
  HOUR      : 時
  DAY       : 日
  MONTH     : 月
  YEAR      : 年
  TIME-ZONE : タイムゾーンを指定します。GMTからの差分の時間を指定するようです。
              省略すると選択しているタイムゾーンとの差分が使用されます。
              普通はGMTとJSTとの差分の-9(時間)となります。

ユニバーサルタイム形式の時間から日時への変換はdecode-universal-timeを使用します。

使用例：
  (encode-universal-time 0 0 0 1 1 1900)    => -32400
  (encode-universal-time 0 0 0 1 1 1900 0)  => 0
  (encode-universal-time 0 0 0 1 1 1900 -9) => -32400
  (encode-universal-time 0 30 18 24 4 2003) => 3260165400

--- 原文 ---
Description: returns an integer which represents the number of seconds 
from midnight 1 January 1900 GMT to the time specified by the given 
components of Decoded Time format. If time-zone is unspecified, it defaults 
to the current time zone and the integer is adjusted to take account of 
daylight saving time. If time-zone is specified, the integer is adjusted 
accordingly but no account is taken of daylight saving time.

参照：
  timestmp.l


■end-of-buffer
[Type       ]: Function
[Arguments  ]: end-of-buffer
[Package    ]: editor
[Seealso    ]: beginning-of-buffer , set-mark-command
[File       ]: cmds.l
[Section    ]: ポジション
[Description]: 
カーソルをバッファの末尾に移動します。[ESC >]
元あったカーソル位置にはマークを設定します。

マークを変更しないためには
(goto-char (point-max))を使います。


■end-of-defun
[Type       ]: Function
[Arguments  ]: end-of-defun &optional (ARG 1)
[Package    ]: editor
[File       ]: sexp.l
[Section    ]: 関数
[Description]: 
カーソルを関数定義の末尾に移動します。[ESC C-e]


■end-of-line
[Type       ]: Function
[Arguments  ]: end-of-line
[Package    ]: editor
[Seealso    ]: beginning-of-line
[File       ]: cmds.l
[Section    ]: ポジション
[Description]: 
現在行の終りに移動します。


■end-of-virtual-line
[Type       ]: Function
[Arguments  ]: end-of-virtual-line
[Package    ]: editor
[Seealso    ]: goto-virtual-eol
[File       ]: cmds.l
[Section    ]: ポジション
[Description]: 
表示行の行末に移動します。
goto-virtual-eol の interactive 版です。


■endp
[Type       ]: Function
[Arguments  ]: endp OBJECT
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: リスト
[Description]: 
OBJECT が空かどうかを返します。
リストの終わりを判定するのに使用されます。 null と異なり、
例えば文字列を指定するとエラーを発生します。

  空リストもしくはnil   t
  空でないリスト        nil
  それ以外              エラー

使用例：
  ;;; nullとの違いを見てみる。
  (endp "foo")  => 不正なデータ型です: t: list
  (endp nil)    => t
  (null "foo")  =>nil
  (null nil)    => t


■enlarge-window
[Type       ]: Function
[Arguments  ]: enlarge-window &optional EXTEND VERTICAL
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ウィンドウ
[Description]: 
ウィンドウの行数・桁数を変更します。
VERTICALを指定しない場合には行数を変更します。

  EXTEND   : 大きくする行数・桁数を指定します。負数を指定すると小さくなります。
  VERTICAL : 桁・行のどちらを設定するか指定します。
        t       桁数を変更する。
        nil     行数を変更する。

使用例：
  ;;; ウィンドウを変更してみる。
  (enlarge-window 2 t)  => t
  (enlarge-window 100)  => 変更できません


■enlarge-window-horizontally
[Type       ]: Function
[Arguments  ]: enlarge-window-horizontally &optional (ARG 1)
[Package    ]: editor
[Seealso    ]: shrink-window-horizontally
[File       ]: window.l
[Section    ]: ウィンドウ
[Description]: 
カーソルのあるウィンドウの幅を大きくします。

使用例：
  ;;; listerのマージンからウィンドウの幅を引く場合
  (enlarge-window-horizontally (- *lister-margin* (window-width)))


■enum-buffers
[Type       ]: Function
[Arguments  ]: enum-buffers FN
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
関数がnil以外を返すまでバッファを列挙し続けます。

使用例：
  ;;; バッファを列挙し続ける。
  (enum-buffers #'(lambda (x) (and (yes-or-no-p "~S" x) x)))
  => #<buffer:  *Completion*>


■eobp
[Type       ]: Function
[Arguments  ]: eobp
[Package    ]: editor
[Seealso    ]: bobp
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
ポイントがバッファの最後にあるかどうか調べます。

使用例：
  ;;; バッファの最後までカーソルをひとつひとつ進める？
  (while (not (eobp))
    (forward-char))


■eolp
[Type       ]: Function
[Arguments  ]: eolp
[Package    ]: editor
[Seealso    ]: bolp
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
カーソルが行末にあるかどうか調べます。

  t     カーソルが行末にある
  nil   カーソルは行末にはない


■eq
[Type       ]: Function
[Arguments  ]: eq X Y
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
X と Y が同一オブジェクトならt、そうでないならnilを返します。
数値や文字列に対しては見かけ上同じでもtとなる保障はありません。xyzzyでは、
数値はtとなるが文字列ではnilとなるように実装されているようです。

使用例：
  ;;; eqで比較してみる。
  (eq 'foo 'foo)        => t            ; 仕様
  (eq 2 2)              => t            ; 処理系依存
  (eq "foo" "foo")      => nil  ; 処理系依存
  (eq '(1 2) '(1 2))    => nil  ; 処理系依存


■eql
[Type       ]: Function
[Arguments  ]: eql X Y
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
X と Y が同一オブジェクトか、同じ型の数値または文字型で値が等しいかを返します。
等しければtを、そうでなければnilを返します。eqとは異なり、値として等しい
かを判断します。ただし、中身までは見ないので文字列は対象外となります。

使用例：
  ;;; eqlで比較してみる。
  (eql 'foo 'foo)       => t            ; 仕様
  (eql 2 2)             => t            ; 仕様
  (eql "foo" "foo")     => nil  ; 処理系依存
  (eql '(1 2) '(1 2))   => nil  ; 処理系依存


■equal
[Type       ]: Function
[Arguments  ]: equal X Y
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
X と Y が同じ構造を持っていればtを、そうでなければnilを返します。

使用例：
  ;;; equalで比較してみる。
  (equal 'foo 'foo)     => t            ; 仕様
  (equal 2 2)           => t            ; 仕様
  (equal "foo" "foo")   => t            ; 仕様
  (equal '(1 2) '(1 2)) => t            ; 仕様


■equalp
[Type       ]: Function
[Arguments  ]: equalp X Y
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
equalと同じように X と Y を比較します。例えば大文字と小文字は区別しません。

使用例：
  ;;; equalpで比較してみる。
  (equalp "Foo" "foo")  => t


■erase-buffer
[Type       ]: Function
[Arguments  ]: erase-buffer BUFFER
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
バッファの内容を削除します。
以下の内容がクリアされます。
  ・バッファ上のテキスト
  ・変更フラグ
  ・修正日付
  ・restriction
  ・UNDO情報


■error
[Type       ]: Function
[Arguments  ]: error DATUM &rest ARGS
[Package    ]: lisp
[Seealso    ]: handler-case
[File       ]: handler.l
[Section    ]: エラー
[Description]: 
例外を発生します。

発生させた例外は上位の階層でハンドリングすることができます。
ハンドリングの方法はhandler-caseを参照して下さい。


■esc-map
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: meta-prefix
[File       ]: keymap.l
[Section    ]: キーマップ
[Description]: 
ESC に続くキーシーケンスのバインディングを格納するキーマップです。


■etc-path
[Type       ]: Function
[Arguments  ]: etc-path
[Package    ]: editor
[Seealso    ]: *etc-path*
[File       ]: misc.l
[Section    ]: システム
[Description]: 
*etc-path*を返します。


■eval
[Type       ]: Function
[Arguments  ]: eval FORM
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 評価
[Description]: 
FORM を評価します。


■eval-buffer
[Type       ]: Function
[Arguments  ]: eval-buffer BUFFER
[Package    ]: editor
[Seealso    ]: eval-region
[File       ]: lispmode.l
[Section    ]: 評価
[Description]: 
バッファ全体を評価します。
eval-region を使って実装されています。


■eval-expression
[Type       ]: Function
[Arguments  ]: eval-expression X
[Package    ]: editor
[File       ]: cmds.l
[Section    ]: 評価
[Description]: 
lisp 式 X を評価します。[ESC ESC]
対話的に呼び出された場合はミニバッファで入力された式を評価します。


■eval-region
[Type       ]: Function
[Arguments  ]: eval-region FROM TO &optional STREAM
[Package    ]: editor
[Seealso    ]: eval-buffer
[File       ]: lispmode.l
[Section    ]: 評価
[Description]: 
リージョン内に書かれたLispコードを評価します。

使用例：
  (eval-region from to (selected-buffer))


■eval-when
[Type       ]: Special Form
[Arguments  ]: eval-when ({SITUATION}*) {FORM}*
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 評価
[Description]: 
ひとことで言うと、フォームをいつ評価するかってことです。

今回の例だと、define-dll-entry などのマクロはコンパイル時に展開
されなければならないのですが、define-dll-entry は foreign で定
義されているので、foreign がロードされていないとマクロであるこ
とが認識できません。(eval-when ...) がなく、単に (require 
"foreign") だけだと、コンパイル時には単なる関数コールだとみなさ
れてしまうため、マクロが展開されなくなってしまいます。そのため
に、eval-when でコンパイルするときも foreign をロードしろと指定
しているわけです。


          ソース                       ソース（左と同一）
            ↓  (eval)                   ↓  (compile)
      Lispインタープリタ           Lispコンパイラ
                                         ↓
                                        *.lc
                                         ↓   (load)
                                   Lispインタープリタ

C言語だと maxというのがマクロですよね。

#define max(a,b)   ((a>b)?a:b)

こんなん。

int foo(int x, int y)
{
   return max(x, y);
}
と書いたら、
int foo(int x, int y)
{
   return ((x> y) ? x : y);
}

こう書いたのと等価ですよね。
Ｃの入門書だとプリプロセッサがいったん展開してから、コンパイル
すると書かれていると思います。

lispだとこんなんになるんですが

----    test.l ---------

(defmacro macro-max (a b)
  `(if (> ,a ,b) ,a ,b))

(defun foo (x y)
  (macro-max x y))

------------------------

M-x byte-compile-fileってやったときに、
(defmacro macro-maxっていう文は、コンパイルするんでなくって
eval(インタープリタが評価する）しとかないといけない。

でないとfooのところで、コンパイル前にソースを展開できない。

だから eval-when (compile)なんです。
よくわからなかったら、３つ全部つけておけば大丈夫という説もある^^;

(eval-when (:compile-toplevel :load-toplevel :execute)

Common Lispの仕様書では、たしか eval, load, compile
だけ,だったと思います。

eval        --- インタープリタにロードするときeval
compile     --- compile時にeval
load        --- compileした*.lc をロードするときeval

(eval-when (:compile-toplevel :load-toplevel :execute)
って、今まで、xyzzyオリジナルかと思ってました。

でもallegloのhelpをみていたら、
(eval-when (:compile-toplevel :load-toplevel :execute)
ってありますね。^^;
知りませんでした。

| Common Lispの仕様書では、たしか eval, load, compile
| だけ,だったと思います。

CLtL1 ではそうだったんですが、CLtL2 で変わりました。


■evenp
[Type       ]: Function
[Arguments  ]: evenp INTEGER
[Package    ]: lisp
[Seealso    ]: oddp
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
INTEGERが偶数ならばt、そうでなければnilを返します。

使用例：  
  (evenp 2)
  => t
  (evenp 0)
  => t
  (evenp 1)
  => nil


■every
[Type       ]: Function
[Arguments  ]: every PREDICATE SEQUENCE &rest MORE-SEQUENCES
[Package    ]: lisp
[Seealso    ]: some , notevery
[File       ]: sequence.l
[Section    ]: シーケンス
[Description]: 
SEQUENCEの先頭の要素から順番にPREDICATEを適用していき、PREDICATEが
nil を返すと、nilをすぐに返します。
全ての要素がPREDICATEを満たす場合、 t を返します。

MORE-SEQUNCESが与えられた時、SEQUENCEの中で最も短いものの終わりまで実行されます。


■exchange-point-and-mark
[Type       ]: Function
[Arguments  ]: exchange-point-and-mark
[Package    ]: editor
[File       ]: cmds.l
[Section    ]: ポジション
[Description]: 
カーソルとマークの位置を入れ替えます。[C-x C-x]


■execute-extended-command
[Type       ]: Function
[Arguments  ]: execute-extended-command COMMAND &optional RAW ARG
[Package    ]: editor
[Seealso    ]: command-execute
[File       ]: misc.l
[Section    ]: 評価
[Description]: 
ミニバッファからコマンドを対話的に入力して実行します。[ESC x]


■execute-shell-command
[Type       ]: Function
[Arguments  ]: execute-shell-command COMMAND &optional INFILE OUTPUT ENVIRON DIRECTORY
[Package    ]: editor
[Seealso    ]: call-process , execute-subprocess
[File       ]: process.l
[Section    ]: プロセス
[Description]: 
外部プログラムを実行します。結果だけをxyzzyに取り込みます。

  COMMAND    : 実行するコマンドをオプション付で指定します。
  INFILE     : 標準入力を使用する外部プログラムであれば入力ファイル名を
               指定します。
  OUTPUT     : 標準出力を出力するバッファを指定します。
  ENVIRON    : 設定する環境変数を連想リスト形式で渡します。
                (("HOME" . "C:/applications/xyzzy/")
                 ("TOPDIR" . "C:/spool/"))
  DIRECTORY  : 実行するディレクトリを指定します。

このコマンドは call-process を使って実装されています。
call-processとは違って標準出力をバッファに出力します。出力するバッファは完
全に破壊されますので注意してください。
外部プログラムとして実行したくない場合は，execute-subprocess を使います。

使用例：
  ;;; コマンドプロンプトのhelpを表示してみる。
  (execute-shell-command "help" nil (selected-buffer))


■execute-subprocess
[Type       ]: Function
[Arguments  ]: execute-subprocess CMD &optional ARG BUFNAME ENVIRON DIRECTORY
[Package    ]: editor
[Seealso    ]: make-process , execute-shell-command , command-output-mode , shell-command-line
[File       ]: process.l
[Section    ]: プロセス
[Description]: 
プログラムを BUFFNAME で指定したバッファ上で実行します。
結果は， BUFFNAME で指定されたバッファ上に表示されます。

  CMD        : 実行するコマンドをオプション付で指定します。
  ARG        : (詳細不明)
  BUFNAME    : 関連付けるバッファ名を指定します。デフォルトは "*Command Output*" です。
               指定したバッファが存在しないとき，新しくバッファを作ります。
  ENVIRON    : 設定する環境変数を連想リスト形式で渡します。
                  (("HOME" . "C:/applications/xyzzy/")
                   ("TOPDIR" . "C:/spool/"))
  DIRECTORY  : 実行するディレクトリを指定します。 

指定されたバッファは command-output-mode になります。

使用例：
  ;;; cmd.exe をバッファ上で実行します。 シンプルなシェルとして動作します。
  (execute-subprocess "cmd.exe")
  =>#<buffer: *Command Output*>


■exp
[Type       ]: Function
[Arguments  ]: exp NUMBER
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
自然対数の底 e の NUMBER 乗の数値を返します。

使用例：
  ;;; 自然対数の底 e とその二乗を表示してみる。
  (exp 1)
  => 2.718282
  (exp 2)
  => 7.389056


■expand-abbrev
[Type       ]: Function
[Arguments  ]: expand-abbrev
[Package    ]: editor
[Seealso    ]: abbrev-mode
[File       ]: abbrev.l
[Section    ]: テキスト
[Description]: 
カーソル位置で静的略称展開を行います。
abbrev-mode の時は self-insert-command でも実行されます。


■export
[Type       ]: Function
[Arguments  ]: export SYMBOLS &optional PACKAGE
[Package    ]: lisp
[Seealso    ]: パッケージ
[File       ]: builtin.l
[Section    ]: パッケージ
[Description]: 
シンボルをパッケージの外部から参照できるようにします。

引数で指定された シンボル（変数や関数）はパッケージからエクスポートされ、
別のパッケージから修飾子無しで参照できるようになります。ただし、修飾子無
しで参照するには、別のパッケージからもuse-packageもしておかないといけませ
ん。
                   use  ┌system──┐
                    ┌─┤          │
  ┌lisp───┐←─┘  └─────┘        ┌user───┐
  │          │←────────────┬─┤          │
  └─────┘←─┐  ┌editor──┐    │  └─────┘
                    └─┤          │←─┘
                        └─────┘

上の図はどのパッケージをuse-pakcageしているかを示しています。
パッケージがuseする他のパッケージはpackage-use-listを使って確認すること
ができます。userは、lispとeditorをuse-packageしています。

si:system-rootはsystemからexportされていますが、userがsystemを
use-packageしていないので修飾子が必要です。

  ;;; system-rootがsystemからexportされていることを確認する。
  (find-symbol "system-root" "system")
  => system:system-root
     :external

このためuserからsystem-rootを使用する場合には(si:system-root)という呼び
出し方になります。

--- 原文 ---
Description: Symbols should be a symbol or a list of symbols which are 
made external symbols of package. Symbols in the list that are already 
external are unaffected whilst those that are internal but not inherited 
become external. If a symbol in the list is inherited and thus internal, 
the symbol is first imported into package, as if by import, and the becomes 
external. By convention, a call to export is placed at the beginning of 
a file to advertise all the symbols that are intended for use by other 
programs. export returns t. package should be a package or the name or 
nickname of a package.

使用例：
    ;;; 引数で指定された aset, file-name-sans-versions, ...は
    ;;; エクスポートされ、別のパッケージから参照できるようになる。
    (export '(aset file-name-directory file-name-nondirectory
          file-name-sans-versions))


■expt
[Type       ]: Function
[Arguments  ]: expt BASE-NUMBER POWER-NUMBER
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
べき乗します。

使用例：  
  (expt 2 10)
  => 1024
  (expt 10 3)
  => 1000


■extract-archive
[Type       ]: Function
[Arguments  ]: extract-archive ARCHIVE-FILE TO-DIRECTORY &rest FILES
[Package    ]: editor
[Seealso    ]: create-archive , delete-file-in-archive
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
アーカイブを展開します。

ARCHIVE-FILE : 展開するアーカイブを指定します。
TO-DIRECTORY : 展開するディレクトリを指定します。
FILES        : 展開するファイルを指定します。指定しない場合は、全てのフ
               ァイルが展開されます。

使用例：
  ;;; d:/foo.lzh を c:/tmp に展開します。
  (extract-archive "d:/foo.lzh" "c:/tmp")


■fast-scroll-down
[Type       ]: Function
[Arguments  ]: fast-scroll-down
[Package    ]: editor
[Seealso    ]: fast-scroll-up
[File       ]: cmds.l
[Section    ]: バッファ
[Description]: 
高速に下スクロールします。[C-Up]


■fast-scroll-up
[Type       ]: Function
[Arguments  ]: fast-scroll-up
[Package    ]: editor
[Seealso    ]: fast-scroll-down
[File       ]: cmds.l
[Section    ]: バッファ
[Description]: 
高速に上スクロールします。[C-Down]


■fboundp
[Type       ]: Function
[Arguments  ]: fboundp SYMBOL
[Package    ]: lisp
[Seealso    ]: boundp
[File       ]: builtin.l
[Section    ]: シンボル
[Description]: 
シンボルに関数が定義されているかどうかを返します。

使用例：
  (fboundp 'car)
  => t
  (fboundp 't)
  => nil


■fceiling
[Type       ]: Function
[Arguments  ]: fceiling NUMBER &optional DIVISOR
[Package    ]: lisp
[Seealso    ]: ceiling
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
ceiling と同じですが浮動小数点数を返します。


■featurep
[Type       ]: Function
[Arguments  ]: featurep FEATURE
[Package    ]: lisp
[Seealso    ]: *features*
[File       ]: evalmacs.l
[Section    ]: システム
[Description]: 
FEATURE が *features* の要素であればそれ以降のリストを返します。
そうでなければ nil を返します。

使用例：
 ;;; process.l より
 (let ((shell (if (featurep :windows-nt) "cmd.exe" "command.com")))
   (defvar *shell* shell)
   (defvar *eshell* shell))


■ffloor
[Type       ]: Function
[Arguments  ]: ffloor NUMBER &optional DIVISOR
[Package    ]: lisp
[Seealso    ]: floor
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
floor と同じですが浮動小数点数を返します。


■fifth
[Type       ]: Function
[Arguments  ]: fifth X
[Package    ]: lisp
[Seealso    ]: nth
[File       ]: list.l
[Section    ]: リスト
[Description]: 
list の 5 番目の要素を返します。

  (fifth X) = (nth 4 X)

使用例：
  (fifth '(1 2 3 4 5 6 7 8 9 0))
  => 5


■file-directory-p
[Type       ]: Function
[Arguments  ]: file-directory-p PATHNAME
[Package    ]: lisp
[Seealso    ]: file-exist-p
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
PATHNAMEがディレクトリならt、そうでなければnilを返します。

使用例：  
  (file-directory-p "C:/xyzzy/")
  => t
  (file-directory-p "C:/xyzzy/xyzzy.exe")
  => nil
  (file-directory-p "~/")
  => t


■file-executable-p
[Type       ]: Function
[Arguments  ]: file-executable-p PATHNAME
[Package    ]: lisp
[Seealso    ]: file-exist-p
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
注）何故か実行ファイルでも、tが返らない気がする。
PATHNAMEが実行ファイルか否かを返します。

  t    実行ファイルである。
  nil  実行ファイルではない。


■file-exist-p
[Type       ]: Function
[Arguments  ]: file-exist-p PATHNAME
[Package    ]: lisp
[Seealso    ]: check-valid-pathname , file-readable-p , file-writable-p , file-executable-p , file-directory-p
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
PATHNAMEが存在すればt、そうでなければnilを返します。

使用例：  
  (file-exist-p "C:/xyzzy/xyzzy.exe")
  => t
  (file-exist-p "~/")
  => t


■file-length
[Type       ]: Function
[Arguments  ]: file-length PATHNAME
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
指定されたファイルの大きさをバイト単位で返します。

  PATHNAME : ファイル名を指定します。

使用例：
  (file-length "C:/xyzzy/xyzzy.exe")
  => 977408


■file-name-dialog
[Type       ]: Function
[Arguments  ]: file-name-dialog &key :char-encoding :eol-code :filter :filter-index :title :default :extension :save :multiple :must-exist :explorer :hide-read-only :initial-directory
[Package    ]: editor
[Seealso    ]: read-directory-name
[File       ]: builtin.l
[Section    ]: ダイアログ
[Description]: 
ファイルを指定するダイアログを表示します。
ユーザーが指定したファイルを返します。多値で返します。
（詳細不明）

  :char-encoding        文字コード指定プルダウンメニューを表示
  :eol-code             改行コード指定プルダウンメニューを表示
  :filter               ファイルの種類リスト
  :filter-index         （詳細不明）
  :title                ダイアログのタイトル
  :default              デフォルトのファイル名
  :initial-directory    初期表示するディレクトリ
  :extension            （詳細不明）
  :save                 non nilならファイル名を付けて保存？
  :multiple             non nilなら複数ファイル指定可
  :must-exist           non nilなら存在しないファイルを指定できない
  :explorer             （詳細不明）
  :hide-read-only       Read Onlyなファイルを表示しない？

使用例：
  ;;; タイトルをFooにして、複数選択可能なダイアログを表示する。
  (file-name-dialog :title "Foo"
                    :multiple t
                    :filter '(("すべてのファイル(*.*)" . "*.*")))
  => ("C:/applications/xyzzy/xyzzycli.exe")


■file-namestring
[Type       ]: Function
[Arguments  ]: file-namestring PATHNAME
[Package    ]: lisp
[Seealso    ]: pathname-name , directory-namestring
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
PATHNAMEのファイル名の部分を返します。
  
使用例：
  (file-namestring "C:/xyzzy/xyzzy.exe")
  => "xyzzy.exe"
  (file-namestring "C:/Windows/")
  => ""

須田さんの場合：
  ;;; 須田さんは、こんなのを定義しているらしい。
  (defun file-name-directory (filename)
    (directory-namestring filename))

  (defun file-name-nondirectory (filename)
    (file-namestring filename))

  (defun file-name-sans-versions (name)
    "Return FILENAME sans backup versions or strings.
  This is a separate procedure so your site-init or startup file can
  redefine it."
    (substring name 0
             (or (string-match "\\.~[0-9]+~\\'" name)
                 (string-match "~\\'" name)
                 (length name))))


■file-newer-than-file-p
[Type       ]: Function
[Arguments  ]: file-newer-than-file-p FILE1 FILE2
[Package    ]: editor
[Seealso    ]: file-write-time
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
ファイルの最終更新日を比較します。
戻り値は以下のとおりです。

  t   file1の方が新しい、もしくはfile2が無効。
  nil file2の方が新しい、もしくはfile1が無効。


■file-position
[Type       ]: Function
[Arguments  ]: file-position FILE-STREAM &optional POSITION
[Package    ]: lisp
[Seealso    ]: buffer-stream-point , buffer-stream-set-point
[File       ]: builtin.l
[Section    ]: 入出力
[Description]: 
FILE-STREAM上の現在位置を取得・変更します。
POSITIONを省略すると、FILE-STREAMの現在位置を返します。
POSITIONを指定すると、FILE-STREAMの現在位置を変更します。

  FILE-STREAM : 入出力するストリームを指定します。
  POSITION    : ストリームの先頭からの位置を指定します。
                0を基底とするインデックスです。

POSITIONには負の数値を指定することはできません。
また、ストリームの終端を越えた数値を指定すると、
その間はNUL文字が詰められます。

使用例：
  ;;; "01234567"と出力後、移動して"abc"と出力します。
  (setq foo (open "abc.txt" :direction :output))
  => #<file-output stream: C:/applications/xyzzy/abc.txt>
  (princ "0123456" foo)         => "0123456"
  (file-position foo 10)        => t
  (princ "abc" foo)             => "abc"
  (close foo)                   => t


■file-property
[Type       ]: Function
[Arguments  ]: file-property PATHNAME
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
PATHNAMEのファイルのプロパティを表示します。
使用例：
  (setq a (merge-pathnames "xyzzy.exe" (si:system-root)))
  =>"C:/Applications/xyzzy/xyzzy.exe"

  (file-property a)
  =>t


■file-readable-p
[Type       ]: Function
[Arguments  ]: file-readable-p PATHNAME
[Package    ]: lisp
[Seealso    ]: file-writable-p , file-exist-p
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
PATHNAMEが読み取り可能ならt、そうでなければnilを返します。

使用例：
  (file-readable-p "C:/xyzzy/xyzzy.exe")
  => t
  (file-readable-p "~/")
  => nil


■file-writable-p
[Type       ]: Function
[Arguments  ]: file-writable-p PATHNAME
[Package    ]: lisp
[Seealso    ]: file-readable-p , file-exist-p
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
PATHNAMEが書き込み可能ファイルならt、そうでなければnilを返します。

使用例：  
  (file-writable-p "C:/xyzzy/xyzzy.exe")
  => t
  (file-writable-p "~/")
  => nil


■file-write-time
[Type       ]: Function
[Arguments  ]: file-write-time FILENAME
[Package    ]: lisp
[Seealso    ]: set-file-write-time , decode-universal-time , format-date-string
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
ファイルの最終更新日をユニバーサルタイム形式で返します。

  FILENAME : ファイル名を指定します。
             フルパスでなければ(default-directory)からの相対パスになります。

使用例：
  ;;; .xyzzyの最終更新日を返します。
  (file-write-time ".xyzzy")
  => 3076147256


■filer
[Type       ]: Function
[Arguments  ]: filer &optional PATH ALLOW-MULTIPLE-SELECT-P CAPTION DUAL-WINDOW-P MODELESSP
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
ファイラを開きます。

  PATH      : ファイラが最初に表示するディレクトリを指定します。
  ALLOW-MULTIPLE-SELECT-P
            : ファイルを複数選択可能にするかどうかを指定します。
  CAPTION   : ファイラのウィンドウのタイトルを指定します。
  DUAL-WINDOW-P
            : 二画面ファイラで開くかどうかを指定します。
  MODELESSP : モードレスダイアログでファイラを開くかどうかを指定します。
              モードレスの場合には編集しつつファイラを表示できます。

選択結果を多値で返します。

  最初の戻り値はユーザが選択したファイルのリストを返します。
  次の戻り値はOKボタンを押したらt、CANCELボタンを押したらnilを返します。

使用例：
  ;;; multiple-value-bindでファイルを受け取る。
  (multiple-value-bind (files bool)
       (filer "c:/" t "title" nil)
       (when bool
         (msgbox "~{~S~%~}" files)))
  => :ok


■filer-calc-directory-byte-size
[Type       ]: Function
[Arguments  ]: filer-calc-directory-byte-size
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
ファイラにて選択したディレクトリのファイルサイズの合計を計算します。


■filer-calc-directory-size
[Type       ]: Function
[Arguments  ]: filer-calc-directory-size
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
ファイラにて選択したディレクトリのディスク使用量を計算します。


■filer-clear-all-marks
[Type       ]: Function
[Arguments  ]: filer-clear-all-marks &optional SECONDARY-WINDOW-P
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
ファイラにてマークを全て解除します。

  SECONDARY-WINDOW-P : 対象とするウィンドウを指定します
             nil         現在アクティブなウィンドウ
             non-nil     現在アクティブでないウィンドウ


■filer-close
[Type       ]: Function
[Arguments  ]: filer-close RESULT
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
ファイラを閉じます。

  RESULT : （詳細不明）


■filer-context-menu
[Type       ]: Function
[Arguments  ]: filer-context-menu
[Package    ]: editor
[Section    ]: ファイラ
[Description]: 
ファイラにてコンテキストメニューを表示します。


■filer-count-marks
[Type       ]: Function
[Arguments  ]: filer-count-marks &optional FILE-ONLY-P SECONDARY-WINDOW-P
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
ファイラにてマークされたファイルの数を返します。

  FILE-ONLY-P        : ディレクトリも対象にするか
             nil         ディレクトリも対象にします
             non-nil     ファイルだけを対象にします
  SECONDARY-WINDOW-P : 対象とするウィンドウを指定します。
             nil         現在アクティブなウィンドウ
             non-nil     現在アクティブでないウィンドウ


■filer-current-file-directory-p
[Type       ]: Function
[Arguments  ]: filer-current-file-directory-p &optional SECONDARY-WINDOW-P
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
ファイラにてカーソル位置のファイルがディレクトリかどうかを判定します。

  SECONDARY-WINDOW-P : 対象とするウィンドウを指定します
             nil         現在アクティブなウィンドウ
             non-nil     現在アクティブでないウィンドウ


■filer-current-file-dot-dot-p
[Type       ]: Function
[Arguments  ]: filer-current-file-dot-dot-p &optional SECONDARY-WINDOW-P
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
ファイラにてカーソル位置のファイルが親ディレクトリを示す ".." 
であるかどうかを判定します。

  SECONDARY-WINDOW-P : 対象とするウィンドウを指定します
             nil         現在アクティブなウィンドウ
             non-nil     現在アクティブでないウィンドウ


■filer-demand-reload
[Type       ]: Function
[Arguments  ]: filer-demand-reload
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
（詳細不明）


■filer-dual-window-p
[Type       ]: Function
[Arguments  ]: filer-dual-window-p
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
ファイラが二画面ファイラかどうかを判別します。


■filer-forward-line
[Type       ]: Function
[Arguments  ]: filer-forward-line &optional ARG SECONDARY-WINDOW-P
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
ファイラにてカーソルを次の行に移動します。

  ARG                : 指定行数移動します
  SECONDARY-WINDOW-P : 対象とするウィンドウを指定します
             nil         現在アクティブなウィンドウ
             non-nil     現在アクティブでないウィンドウ


■filer-forward-page
[Type       ]: Function
[Arguments  ]: filer-forward-page &optional ARG SECONDARY-WINDOW-P
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
ファイラにてカーソルを次のページに移動します。

  ARG                : 指定ページ数移動します
  SECONDARY-WINDOW-P : 対象とするウィンドウを指定します
             nil         現在アクティブなウィンドウ
             non-nil     現在アクティブでないウィンドウ


■filer-get-current-file
[Type       ]: Function
[Arguments  ]: filer-get-current-file &optional SECONDARY-WINDOW-P
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
ファイラにてカーソル位置のファイルのパスを返します。

  SECONDARY-WINDOW-P : 対象とするウィンドウを指定します
             nil         現在アクティブなウィンドウ
             non-nil     現在アクティブでないウィンドウ


■filer-get-directory
[Type       ]: Function
[Arguments  ]: filer-get-directory &optional SECONDARY-WINDOW-P
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
ファイラにて現在表示しているディレクトリのフルパスを取得します。

  SECONDARY-WINDOW-P : 対象とするウィンドウを指定します
             nil         現在アクティブなウィンドウ
             non-nil     現在アクティブでないウィンドウ


■filer-get-drive
[Type       ]: Function
[Arguments  ]: filer-get-drive &optional SECONDARY-WINDOW-P
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
ファイラにて現在表示しているドライブを取得します。

  SECONDARY-WINDOW-P : 対象とするウィンドウを指定します
             nil         現在アクティブなウィンドウ
             non-nil     現在アクティブでないウィンドウ


■filer-get-mark-files
[Type       ]: Function
[Arguments  ]: filer-get-mark-files &optional FILE-ONLY-P SECONDARY-WINDOW-P
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
ファイラにてマークされたファイルのパスをリストの形で返します。

  FILE-ONLY-P        : ディレクトリも対象にするか
             nil         ディレクトリも対象にします
             non-nil     ファイルだけを対象にします
  SECONDARY-WINDOW-P : 対象とするウィンドウを指定します
             nil         現在アクティブなウィンドウ
             non-nil     現在アクティブでないウィンドウ


■filer-get-sort-order
[Type       ]: Function
[Arguments  ]: filer-get-sort-order &optional SECONDARY-WINDOW-P
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
ファイラにおけるファイルの表示順を返します。

  SECONDARY-WINDOW-P : 対象とするウィンドウを指定します
             nil         現在アクティブなウィンドウ
             non-nil     現在アクティブでないウィンドウ


■filer-get-text
[Type       ]: Function
[Arguments  ]: filer-get-text
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
一画面ファイラにて上部のファイル名の欄に書いてあるテキストを返します。


■filer-goto-bof
[Type       ]: Function
[Arguments  ]: filer-goto-bof &optional SECONDARY-WINDOW-P
[Package    ]: editor
[Seealso    ]: filer-goto-eof
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
ファイラにてカーソルをウィンドウの先頭に移動します。

  SECONDARY-WINDOW-P : 対象とするウィンドウを指定します
             nil         現在アクティブなウィンドウ
             non-nil     現在アクティブでないウィンドウ


■filer-goto-eof
[Type       ]: Function
[Arguments  ]: filer-goto-eof &optional SECONDARY-WINDOW-P
[Package    ]: editor
[Seealso    ]: filer-goto-bof
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
ファイラにてカーソルをウィンドウの最後に移動します。

  SECONDARY-WINDOW-P : 対象とするウィンドウを指定します
             nil         現在アクティブなウィンドウ
             non-nil     現在アクティブでないウィンドウ


■filer-goto-file
[Type       ]: Function
[Arguments  ]: filer-goto-file STRING &optional START REVERSE WILD-P
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
ファイラにてファイル名が STRING の位置にカーソルを移動します。

  STRING  : 検索するファイル名
  START   : 検索を開始する位置
     nil      先頭から
     t        現在位置から
     それ以外 現在位置の次から
  REVERSE : 探す方向
     nil      前方向
     non-nil  後方向
  WILD-P  : ワイルドカードを有効にするか
     nil      無効
     t        有効
     それ以外 有効かつ先頭一致(末尾に"*"を補う)


■filer-isearch
[Type       ]: Function
[Arguments  ]: filer-isearch &optional CHAR NO-WRAP SECONDARY-WINDOW-P
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
ファイラにてインクリメンタルサーチによるカーソル移動を行います。

  CHAR               : 検索する文字。nil の時は入力されたキーを検索します。
  NO-WRAP            : 最後までいったら、最初に戻るかどうか
             nil         戻らない
             non-nil     戻る
  SECONDARY-WINDOW-P : 対象とするウィンドウを指定します
             nil         現在アクティブなウィンドウ
             non-nil     現在アクティブでないウィンドウ


■filer-left-window
[Type       ]: Function
[Arguments  ]: filer-left-window
[Package    ]: editor
[Seealso    ]: filer-right-window
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
二画面ファイラにて左側のウィンドウをアクティブにします。


■filer-left-window-p
[Type       ]: Function
[Arguments  ]: filer-left-window-p
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
二画面ファイラにて現在アクティブなウィンドウが左側のウィンドウか判別します。


■filer-mark
[Type       ]: Function
[Arguments  ]: filer-mark &optional FILE-ONLY-P SECONDARY-WINDOW-P
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
ファイラにてカーソル位置のファイルをマークします。

  FILE-ONLY-P        : ディレクトリも対象にするか
             nil         ディレクトリも対象にします
             non-nil     ファイルだけを対象にします
  SECONDARY-WINDOW-P : 対象とするウィンドウを指定します
             nil         現在アクティブなウィンドウ
             non-nil     現在アクティブでないウィンドウ


■filer-mark-all
[Type       ]: Function
[Arguments  ]: filer-mark-all &optional FILE-ONLY-P SECONDARY-WINDOW-P
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
ファイラにて現在表示しているディレクトリにあるファイル全てをマークします。

  FILE-ONLY-P        : ディレクトリも対象にするか
             nil         ディレクトリも対象にします
             non-nil     ファイルだけを対象にします
  SECONDARY-WINDOW-P : 対象とするウィンドウを指定します
             nil         現在アクティブなウィンドウ
             non-nil     現在アクティブでないウィンドウ


■filer-mark-match-files
[Type       ]: Function
[Arguments  ]: filer-mark-match-files MASK &optional SECONDARY-WINDOW-P
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
MASK の示す条件を満たすファイルを全てマークします。

  MASK               : マークするファイル名の条件
  SECONDARY-WINDOW-P : 対象とするウィンドウを指定します
             nil         現在アクティブなウィンドウ
             non-nil     現在アクティブでないウィンドウ


■filer-modal-p
[Type       ]: Function
[Arguments  ]: filer-modal-p
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
ファイラがモーダルか判別します。


■filer-modify-column-width
[Type       ]: Function
[Arguments  ]: filer-modify-column-width N D &optional SECONDARY-WINDOW-P
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
ファイラにおけるそれぞれのカラムの幅を変えます。

  N                  : 変更するカラム
             0           ファイル名
             1           サイズ
             2           更新日時
             3           属性
  D                  : 変更量
  SECONDARY-WINDOW-P : 対象とするウィンドウを指定します
             nil         現在アクティブなウィンドウ
             non-nil     現在アクティブでないウィンドウ


■filer-read-char
[Type       ]: Function
[Arguments  ]: filer-read-char
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
ファイラにてキーボードからの入力を読み込み、文字を返します。


■filer-reload
[Type       ]: Function
[Arguments  ]: filer-reload &optional MASK SECONDARY-WINDOW-P
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
ファイラの画面を更新し、最新の状態にします。

  MASK               : 表示するファイルの条件を指定します
  SECONDARY-WINDOW-P : 対象とするウィンドウを指定します
             nil         現在アクティブなウィンドウ
             non-nil     現在アクティブでないウィンドウ


■filer-right-window
[Type       ]: Function
[Arguments  ]: filer-right-window
[Package    ]: editor
[Seealso    ]: filer-left-window
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
二画面ファイラにて右側のウィンドウをアクティブにします。


■filer-scroll-left
[Type       ]: Function
[Arguments  ]: filer-scroll-left &optional SECONDARY-WINDOW-P
[Package    ]: editor
[Seealso    ]: filer-scroll-right
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
ファイラにて左方向にスクロールします。

  SECONDARY-WINDOW-P : 対象とするウィンドウを指定します
             nil         現在アクティブなウィンドウ
             non-nil     現在アクティブでないウィンドウ


■filer-scroll-right
[Type       ]: Function
[Arguments  ]: filer-scroll-right &optional SECONDARY-WINDOW-P
[Package    ]: editor
[Seealso    ]: filer-scroll-left
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
ファイラにて右方向にスクロールします。

  SECONDARY-WINDOW-P : 対象とするウィンドウを指定します
             nil         現在アクティブなウィンドウ
             non-nil     現在アクティブでないウィンドウ


■filer-set-directory
[Type       ]: Function
[Arguments  ]: filer-set-directory DIRECTORY &optional SECONDARY-WINDOW-P
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
ファイラにて表示するディレクトリを DIRECTORY に変更します。

  DIRECTORY          : ディレクトリを指定します
  SECONDARY-WINDOW-P : 対象とするウィンドウを指定します
             nil         現在アクティブなウィンドウ
             non-nil     現在アクティブでないウィンドウ


■filer-set-file-mask
[Type       ]: Function
[Arguments  ]: filer-set-file-mask MASK &optional SECONDARY-WINDOW-P
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
ファイラにて表示する条件を指定します。

  MASK               : 表示する条件
  SECONDARY-WINDOW-P : 対象とするウィンドウを指定します
             nil         現在アクティブなウィンドウ
             non-nil     現在アクティブでないウィンドウ


■filer-set-text
[Type       ]: Function
[Arguments  ]: filer-set-text STRING
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
一画面ファイラのファイル名の欄に STRING をセットします。


■filer-sort
[Type       ]: Function
[Arguments  ]: filer-sort ARG &optional SECONDARY-WINDOW-P
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
ファイラにおけるファイルの表示順を変更します。

  ARG                : 表示順を指定します
  SECONDARY-WINDOW-P : 対象とするウィンドウを指定します
             nil         現在アクティブなウィンドウ
             non-nil     現在アクティブでないウィンドウ


■filer-subscribe-to-reload
[Type       ]: Function
[Arguments  ]: filer-subscribe-to-reload PATH &optional SUB-DIRECTORY-P
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
ファイラにて PATH を表示しているウィンドウを更新し、
最新の状態にします。

  PATH            : パスを指定します
  SUB-DIRECTORY-P : PATH のサブディレクトリを更新対象にするか否か
          nil         更新しない
          non-nil     更新する


■filer-swap-windows
[Type       ]: Function
[Arguments  ]: filer-swap-windows
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
二画面ファイラにてもう一方のウィンドウへフォーカスを移します。


■filer-toggle-all-marks
[Type       ]: Function
[Arguments  ]: filer-toggle-all-marks &optional FILE-ONLY-P SECONDARY-WINDOW-P
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
ファイラにて現在のディレクトリの全てのファイルについてマークされた状態と
されていない状態を反転させます。

  FILE-ONLY-P        : ディレクトリも対象にするか
             nil         ディレクトリも対象にします
             non-nil     ファイルだけを対象にします
  SECONDARY-WINDOW-P : 対象とするウィンドウを指定します
             nil         現在アクティブなウィンドウ
             non-nil     現在アクティブでないウィンドウ


■filer-toggle-mark
[Type       ]: Function
[Arguments  ]: filer-toggle-mark &optional FILE-ONLY-P SECONDARY-WINDOW-P
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
ファイラにてカーソル位置のファイルについてマークされた状態とされていない
状態を反転させます。

  FILE-ONLY-P        : ディレクトリも対象にするか
             nil         ディレクトリも対象にします
             non-nil     ファイルだけを対象にします
  SECONDARY-WINDOW-P : 対象とするウィンドウを指定します
             nil         現在アクティブなウィンドウ
             non-nil     現在アクティブでないウィンドウ


■filer-viewer
[Type       ]: Function
[Arguments  ]: filer-viewer
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイラ
[Description]: 
ファイラにてカーソル位置のファイルの最初の方を見ることができます。


■fill
[Type       ]: Function
[Arguments  ]: fill SEQUENCE ITEM &key :start :end
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: シーケンス
[Description]: 
SEQUENCEのそれぞれをITEMに置換えます。元のSEQUENCEは置き換えられます。

使用例：
  ;;; シーケンスを作って、変更してみる。
  (setq foo (make-sequence 'string 8 :initial-element #\a))
  => "aaaaaaaa"
  (fill foo #\b :start 3 :end 4)
  => "aaabaaaa"
  foo
  => "aaabaaaa"


■fill-column
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: auto-fill-mode
[File       ]: fill.l
[Section    ]: ポジション
[Description]: 
詰め込み時の折り返しの桁数を保持します。
既定値は 72 です。

使用例:
  ;;; 既定値を 62 に変更する。
  (setq-default fill-column 62)

カレントバッファの値を変更する場合は、Function set-fill-column 
を使用します。


■fill-paragraph
[Type       ]: Function
[Arguments  ]: fill-paragraph
[Package    ]: editor
[Seealso    ]: fill-region-as-paragraph
[File       ]: fill.l
[Section    ]: 文字列
[Description]: 
現在の段落を詰め込みます。


■fill-pointer
[Type       ]: Function
[Arguments  ]: fill-pointer VECTOR
[Package    ]: lisp
[Seealso    ]: array-has-fill-pointer-p , make-array , vector-pop , vector-push , length
[File       ]: builtin.l
[Section    ]: 配列
[Description]: 
ベクタ（一次元配列） VECTOR のフィルポインタの位置を返します。
VECTOR がフィルポインタを持たない場合、エラーとなります。
  
備考:
  フィルポインタは、ベクタの見た目上の最後の位置を決めます。
  make-array では与えられた DIMENSION の配列を作りますが、
  フィルポインタを与えた場合、画面に表示されたり vector-pop などの関数が
  作用したりするのはフィルポインタの位置までとなります。

  なお、aref を使えばフィルポインタ以降の要素にもアクセスできます。
  また、フィルポインタに関係ないベクタ本来の長さを知りたい場合は
  array-dimension （または array-dimensions）を使います。


■fill-region
[Type       ]: Function
[Arguments  ]: fill-region FROM TO
[Package    ]: editor
[Seealso    ]: fill-paragraph
[File       ]: fill.l
[Section    ]: リージョン
[Description]: 
リージョン内の各段落に対し、詰め込みを行います。

使用例:
  ;;; バッファ全体を詰め込み
  (fill-region (point-min) (point-max))


■fill-region-as-paragraph
[Type       ]: Function
[Arguments  ]: fill-region-as-paragraph FROM TO
[Package    ]: editor
[Seealso    ]: fill-column
[File       ]: fill.l
[Section    ]: リージョン
[Description]: 
リージョンを 1 つの段落として詰め込みます。
詰め込み桁数は、変数 fill-column が参照されます。


■fill-region-hook
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: auto-fill-hook
[Section    ]: リージョン
[Description]: 
fill-region/fill-paragraphの最後で実行されます。


■find
[Type       ]: Function
[Arguments  ]: find ITEM SEQUENCE &key :from-end :test :test-not :start :end :key
[Package    ]: lisp
[Seealso    ]: find-if , find-if-not , position , member
[File       ]: builtin.l
[Section    ]: シーケンス
[Description]: 
SEQUENCE の中で ITEM との :test を満たすものがあればそれを返します。なければ
nilを返します。

使用例：
  ;;; リストから'aを探してみる。
  (find 'a '(e c a b))
  => a


■find-buffer
[Type       ]: Function
[Arguments  ]: find-buffer BUFFER-NAME
[Package    ]: editor
[Seealso    ]: find-name-buffer
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
名前がBUFFER-NAMEなバッファが存在すればそのバッファを返します。
存在しなければnilを返します。

使用例：
  (find-buffer "*scratch*")
  => #<buffer: *scratch*>
  (find-buffer "*hoge hoge*")
  => nil


■find-file
[Type       ]: Function
[Arguments  ]: find-file FILENAME &optional ENCODING NOMSG
[Package    ]: editor
[Seealso    ]: find-other-file , find-file-other-window , ed::find-file-internal
[File       ]: files.l
[Section    ]: ファイルシステム
[Description]: 
指定されたファイルを開きます。

--- mule の説明 ---
Command: find-file filename

この関数は、 filename という名前のファイルを(ユーザーが)エディットできる
ようにします。 find-file-noselect を呼んでファイルに対するバッファを選択
(訳 注: select)します。 

インタラクティブに呼ばれた場合、 filename を求め(ミニバッファに)プロンプ
トを出します。


■find-file-in-archive
[Type       ]: Function
[Arguments  ]: find-file-in-archive ARCNAME FILENAME
[Package    ]: editor
[Seealso    ]: extract-archive , find-file
[File       ]: files.l
[Section    ]: ファイルシステム
[Description]: 
アーカイブからファイルを展開して開きます。

  ARCNAME  : アーカイブを指定します。
  FILENAME : 展開するファイルを指定します。

使用例：
  (find-file-in-archive "C:/foo/bar.lzh" "hoge/fuga.txt")


■find-file-other-window
[Type       ]: Function
[Arguments  ]: find-file-other-window FILENAME &optional ENCODING NOMSG
[Package    ]: editor
[Seealso    ]: find-file
[File       ]: files.l
[Section    ]: ファイルシステム
[Description]: 
指定されたファイルを別のウィンドウで開きます。

--- mule の説明 ---
Command: find-file-other-window filename

この関数は、 (別のウィンドウで)ファイル filename をエディットします。 2
つもしくはそれ以上のウィンドウが画面上に存在する場合、選択されていない(
訳注: non-selected)ウィンドウを用います。 1つしかウィンドウが存在しない
場合、それを分割します。 nil を返します。 

インタラクティブに呼ばれた場合、 filename を求め(ミニバッファに)プロンプ
トを出します。


■find-if
[Type       ]: Function
[Arguments  ]: find-if PREDICATE SEQUENCE &key :from-end :start :end :key
[Package    ]: lisp
[Seealso    ]: find , find-if-not
[File       ]: builtin.l
[Section    ]: シーケンス
[Description]: 
SEQUENCEの中でPREDICATEを満たすものがあればそれを返します。なければnilを返します。


■find-if-not
[Type       ]: Function
[Arguments  ]: find-if-not PREDICATE SEQUENCE &key :from-end :start :end :key
[Package    ]: lisp
[Seealso    ]: find , find-if
[File       ]: builtin.l
[Section    ]: シーケンス
[Description]: 
SEQUENCEの中でPREDICATEを満たさないものがあればそれを返します。なければ
nilを返します。


■find-load-path
[Type       ]: Function
[Arguments  ]: find-load-path FILENAME
[Package    ]: lisp
[Seealso    ]: *load-path*
[File       ]: builtin.l
[Section    ]: システム
[Description]: 
*load-path*からファイルを検索しそのフルパスを返します。

使用例：
  (find-load-path "wip/ftp.l")
  => "C:/APPLICATIONS/XYZZY/lisp/wip/ftp.l"
  (find-load-path "siteinit.l")
  => "C:/APPLICATIONS/XYZZY/site-lisp/siteinit.l"


■find-name-buffer
[Type       ]: Function
[Arguments  ]: find-buffer BUFFER-NAME
[Package    ]: editor
[Seealso    ]: find-buffer , create-new-buffer
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
名前がBUFFER-NAMEもしくはBUFFER-NAME<数字>なバッファのリストを返します。
存在しなければnilを返します。

使用例：
  (find-name-buffer " *TAGS*")
  => (#<buffer:  *TAGS*<2>> #<buffer:  *TAGS*>)
  (find-name-buffer "*hoge hoge*")
  => nil


■find-other-file
[Type       ]: Function
[Arguments  ]: find-other-file FILENAME &optional ENCODING NOMSG
[Package    ]: editor
[Seealso    ]: find-file
[File       ]: files.l
[Section    ]: ファイルシステム
[Description]: 
現在のバッファを閉じて指定されたファイルを開きます。

互換性：
  muleにはなさそう。


■find-package
[Type       ]: Function
[Arguments  ]: find-package NAME
[Package    ]: lisp
[Seealso    ]: パッケージ , defpackage , delete-package
[File       ]: builtin.l
[Section    ]: パッケージ
[Description]: 
パッケージを名前で検索して、そのパッケージを返します。

  NAME : パッケージの名前

使用例：
  ;;; lispとsystemパッケージを取得してみる。
  (find-package "lisp")
  => #<package: lisp>
  (find-package "si")
  => #<package: system>

  ;;; "baz"という名のパッケージは存在しない
  (find-package "baz")
  => nil


■find-pseudo-frame
[Type       ]: Function
[Arguments  ]: find-pseudo-frame NAME
[Package    ]: editor
[Seealso    ]: select-pseudo-frame
[File       ]: pframe.l
[Section    ]: ウィンドウ
[Description]: 
現在のフレームの中から名前が NAME であるものを探して返します。


■find-symbol
[Type       ]: Function
[Arguments  ]: find-symbol STRING &optional PACKAGE
[Package    ]: lisp
[Seealso    ]: intern
[File       ]: builtin.l
[Section    ]: パッケージ
[Description]: 
パッケージ中にシンボルが登録されているかを調べます。

  STRING  : シンボルの名前
  PACKAGE : パッケージの名前

戻り値は多値で返されます。

  nil     シンボルが見つからなかった場合はnilを返します。
  nil以外 シンボルが見つかった場合はそのシンボルをそのまま返します。

使用例：
  ;;; find-fileとfind-file-internalというシンボルを調べてみる。
  (find-symbol "find-file" "lisp")
  => nil
     nil
  (find-symbol "find-file" "editor")
  => find-file
     :external
  (find-symbol "find-file-internal" "editor")
  => editor::find-file-internal
     :internal


■find-text-attribute
[Type       ]: Function
[Arguments  ]: find-text-attribute TAG &key :start :end :from-end :test :test-not :key
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: テキスト
[Description]: 
set-text-attributeで指定したタグを検索します。

(progn
  (set-text-attribute 1 6 'my-tag 1)
  (multiple-value-bind (from to tag)
      (find-text-attribute 'my-tag)
    (format t "~d, ~d, ~A" from to tag)))
==> 1, 6, my-tag

| 2. set-text-attribute で、複数範囲に同一 tag を指定した場
|    合、find〜 は一番先頭に近いものしか返さない(ところしか
|    見たことがない)のですが、二番目以降を取得することはで
|    きますでしょうか？

find-text-attribute TAG :start POS

で、POS に現在位置+1を与えれば次のが返ってくる予定です。
使ったことないので動くかどうか分かりませんが。

| 3. find-text-attribute の &key 引数は、何か意味を持ってい
|    ますでしょうか？

シーケンスと同様に、:test と :test-not には比較関数を
与えます。また、:key にはアクセス関数(か?)を与えます。
たとえば、tag の形式が

  ("foo" bar)

である場合、

  (find-text-attribute "foo" :test #'equal :key #'car)

とか、

  (find-text-attribute 'bar :test #'eq :key #cadr)

で検索することができる予定です。使ったことないので動く
かどうか分かりませんが。

:test-not は、関数が nil を返した場合に真とする以外は :
test と同様です。:test と :test-not は同時に指定するこ
とはできず、省略した場合は :test #'eql が与えられたも
のとします。また :key を省略した場合は :key #'identity 
が与えられたものとします(たぶん)。


■find-text-attribute-if
[Type       ]: Function
[Arguments  ]: find-text-attribute-if TEST &key :start :end :from-end :key
[Package    ]: editor
[Seealso    ]: find-text-attribute-if-not , find-text-attribute , set-text-attribute
[File       ]: builtin.l
[Section    ]: テキスト
[Description]: 
テキスト属性のうち、タグが TEST を満たすものを探し、最初に見つかったものを返します。
多値で、テキスト属性の開始位置・終了位置・タグを返します。

  :start     検索開始位置（デフォルトでは point-min?）
  :end       検索終了位置（デフォルトでは point-max?）
  :from-end  後ろから検索するかどうか
  :key       TEST に渡す前にタグに適用する関数


■find-text-attribute-if-not
[Type       ]: Function
[Arguments  ]: find-text-attribute-if-not TEST &key :start :end :from-end :key
[Package    ]: editor
[Seealso    ]: find-text-attribute-if , find-text-attribute , set-text-attribute
[File       ]: builtin.l
[Section    ]: テキスト
[Description]: 
テキスト属性のうち、タグが TEST を満たさないものを探し、最初に見つかったものを返します。
多値で、テキスト属性の開始位置・終了位置・タグを返します。

  :start     検索開始位置（デフォルトでは point-min?）
  :end       検索終了位置（デフォルトでは point-max?）
  :from-end  後ろから検索するかどうか
  :key       TEST に渡す前にタグに適用する関数


■find-text-attribute-point
[Type       ]: Function
[Arguments  ]: find-text-attribute-point POINT
[Package    ]: editor
[Seealso    ]: modify-text-attributes , find-text-attribute
[File       ]: builtin.l
[Section    ]: テキスト
[Description]: 
POINT の位置のテキストの属性を多値で返します。

  FROM          属性を付加された開始位置
  TO            属性を付加された終了位置
  TAG           個々の属性を区別するタグ
  FOREGROUND    文字色
  BACKGROUND    背景色
  BOLD          ボールド
  UNDERLINE     下線付き
  STRIKE-OUT    取り消し線
  PREFIX        不明
  EXTEND        不明

使用例：
  ;;; my-tagというタグ名で領域を緑色に設定
  (set-text-attribute (point-min) (point-max) 'my-tag :foreground 2)
  => t
  ;;; カーソル位置にタグがあれば赤色かつボールドに変更
  (multiple-value-bind (from to tag foreground background bold underline strike-out prefix extend)
      (find-text-attribute-point 1)
    (when tag
      (modify-text-attributes tag ; foregroundとbold以外はそのまま設定する。
       :foreground 1              ; 赤色に設定
       :background background
       :bold t                    ; ボールドに設定
       :underline underline
       :strike-out strike-out
       :prefix prefix
       :extend extend)))
  => t


■first
[Type       ]: Function
[Arguments  ]: first LIST
[Package    ]: lisp
[Seealso    ]: car
[File       ]: list.l
[Section    ]: リスト
[Description]: 
carの別名です。
全く同じ動きをします。

使用例：
  ;;; carと同じ動きをする。
  (car '(1 2 3))
  => 1
  (first '(1 2 3))
  => 1
  (symbol-function 'car)
  => #<function: car>
  (symbol-function 'first)
  => #<function: car>
 
参考：
  ;;; list.lの定義
  (si:*fset 'first #'car)


■first-error
[Type       ]: Function
[Arguments  ]: first-error &optional ARG WRAP
[Package    ]: editor
[Seealso    ]: next-error
[File       ]: errors.l
[Section    ]: エラー
[Description]: 
grep後の*compilation*バッファ上で実行すると、該当行へジャンプ可能です。
以後は、next-error(F11)を押すことで次々と該当行へジャンプ可能です。
各種コンパイラの出力結果に応じてジャンプすることも可能です。
また、コンパイラのエラー出力が標準に対応していなくても、
*error-regexp-list*を変更することで対応が可能な場合があります。


■flet
[Type       ]: Special Form
[Arguments  ]: flet ({(NAME LAMBDA-LIST {declaration}* [doc-string] {FORM}*)}*) {FORM}*
[Package    ]: lisp
[Seealso    ]: labels , macrolet
[File       ]: builtin.l
[Section    ]: 関数
[Description]: 
ローカルな関数を定義してフォームを評価します。フォーム内で flet で
定義された関数は、外部で定義された同じ名前の関数よりも優先されます。
関数は同時に複数定義できます。

それぞれの定義方法は defun のように、最初に関数名、
次にパラメータのリスト(&optional, &rest, &key パラメータも使えます)、
そしてoptional declaration と docstring、そして最後にフォームと続きます。

  (flet ((safesqrt (x) (sqrt (abs x)))) 
    ;; The safesqrt function is used in two places. 
    (safesqrt (apply #'+ (map 'list #'safesqrt longlist))))


■float
[Type       ]: Function
[Arguments  ]: float NUMBER &optional OTHER
[Package    ]: lisp
[Seealso    ]: rationalize
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
任意の型の数値を浮動小数点型に変換します。

  (float 'NUMBER) == (coerce 'NUMBER 'single-float)

使用例：
  ;;; integerをfloatに変換する。
  (setq var 0)                  => 0
  (type-of var)                 => integer
  (setq var (float var))        => 0.0
  (type-of var)                 => single-float


■floatp
[Type       ]: Function
[Arguments  ]: floatp OBJECT
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
OBJECTがfloatならt、それ以外ならnilを返します。


■floor
[Type       ]: Function
[Arguments  ]: floor NUMBER &optional DIVISOR
[Package    ]: lisp
[Seealso    ]: ceiling , truncate , round
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
NUMBERを負の無限大方向に丸めます。
DIVISORを省略した場合にはNUMBERを越えない最大の整数になります。

使用例：  
  (floor 2.2)
  => 2
  (floor 2.8)
  => 2
  (floor -2.4)
  => -3  
  (multiple-value-list (floor 2.2))
  => (2 0.2)


■fmakunbound
[Type       ]: Function
[Arguments  ]: fmakunbound SYMBOL
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 変数と定数
[Description]: 
指定されたシンボルの関数定義への束縛を解消します。
これ以降fboundpはnilを返すようになります。シンボルへの値と関数定義の束縛
は独立しているので、fmakunboundをしてもboundpの結果は変わりません。

使用例：
  ;;; 関数定義への束縛を解消してみる。
  (defun foo (x) (* x 3))       => foo
  (fboundp 'foo)                => t
  (fmakunbound 'foo)            => foo
  (fboundp 'foo)                => nil


■focus-tool-bar
[Type       ]: Function
[Arguments  ]: focus-tool-bar
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: メニュー
[Description]: 
タブバーにフォーカスを移します。タブバーからはTABを押すことで元のバッフ
ァに戻ることが出来ます。タブバーが存在しないときは、フォーカスは元のバッ
ファのままです。


■following-char
[Type       ]: Function
[Arguments  ]: following-char
[Package    ]: editor
[Seealso    ]: preceding-char
[File       ]: builtin.l
[Section    ]: テキスト
[Description]: 
カーソルがある位置のキャラクタを返します。
バッファの末尾にカーソルがある場合には、#\NULを返します。

使用例：
  ;;; "長崎市"の'崎'の上にカーソルがある場合
  (following-char)
  => #\崎

  ;;; [EOF]にカーソルがある場合
  (following-char)
  => #\NUL
(following-char)


■format
[Type       ]: Function
[Arguments  ]: format DESTINATION CONTROL-STRING &rest ARGUMENTS
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 入出力
[Description]: 
出力書式に従って出力します。

  DESTINATION : 出力先を指定します。
        t       標準出力に出力
        nil     文字列として結果を返す
        fp      指定のストリームに出力

  CONTROL-STRING : 以下の出力指定子で整形します。
        ~A      Ascii（アスキー指示）。princタイプで出力。
        ~S      S-Expression（S式指示）。prin1タイプで出力。
        ~%      改行。~n%はn個の改行
        ~&      出力ストリームが行頭でなければ改行。fresh-line参照。
        ~|      改ページ
        ~~      Tilde（チルダ指示）
        ~改行   改行とそれに続く空白文字を無視する
        ~T      Tabulate（タブ指示）
        ~*      次のargumentを無視
        ~?      Indirection（間接指示）
        ~D      10進数
        ~B      Binary（2進指示）
        ~O      Octal（8進指示）
        ~X      Hexadecimal（16進指示）
        ~R      Radix（基数指示）
        ~P      Plural（複数形指示）
        ~C      Character（文字指示）
        ~F      Fixed-format floating-point（固定小数点形式浮動小数指示）
        ~E      Exponential floating-point（指数形式浮動小数指示）
        ~G      General floating-point（一般浮動小数点指示）
        ~$      Dollars floating-point（ドル浮動小数点指示）
        ~(      Case conversion（ケース変換指示）
        ~)      ~(を閉じる
        ~[      Conditional expression（条件選択指示）
        ~]      ~[を閉じる
        ~{      Iteration（反復指示）
        ~}      ~{を閉じる
        ~^      Up and out（ゼロ終了指示）

使用例:
  ;;; 整数に0を付けて出力 ("~[最小桁数][,パディング文字][,桁区切り文字]D")
  (format nil "~5,'0D" 4)
  => "00004"

  ;;; 整数を3桁ごとにカンマで区切って出力
  (format nil "~:D" 1234567890)
  => "1,234,567,890"

  ;;; 文字列を最低桁カラムになるように空白を追加して出力
  (format nil "~10A" "foo")
  => "       foo"
  (format nil "~10@A" "foo")
  => "foo       "

  ;;; ケース変換の例
  (format nil "~(~A~)" "FOO BAR")  ;全て小文字
  => "foo bar"
  (format nil "~:(~A~)" "foo bar") ;単語の先頭の文字を大文字
  => "Foo Bar"
  (format nil "~@(~A~)" "foo bar") ;先頭の文字を大文字
  => "Foo bar"
  (format nil "~:@(~A~)" "foo bar");全て大文字
  => "FOO BAR"

  ;;; 間接指示の例
  (format nil "~? ~D" "[~A ~D]" '("foo" 2) 3)
  => "[foo 2] 3"
  (format nil "~@? ~D" "[~A ~D]" "foo" 2 3)
  => "[foo 2] 3"

  ;;; 条件選択指示の例
  (format nil "Windows ~[NT~;98~;95~]" 0)
  => "Windows NT"
  (format nil "Windows ~[NT~;98~;95~]" 1)
  => "Windows 98"
  ;デフォルト値 "~:;"
  (format nil "Windows ~[NT~;98~;95~:;3.1~]" 5)
  => "Windows 3.1"

  ;;; 反復指示の例
  ; "~{" 引数はリスト
  (format nil "~{ ~A~}" '("dog" "cat" "pig"))
  => " dog cat pig"
  ; "~:{"  引数はリストのリスト
  (format nil "~:{[~A ~D]~}" '(("a" 1) ("b" 2) ("c" 3)))
  => "[a 1][b 2][c 3]"
  ; "~@{" 残りの引数をリストとして用いる
  (format nil "~@{[~A ~D]~}" "a" 1 "b" 2 "c" 3)
  => "[a 1][b 2][c 3]"
  ; "~@:{" 引数のリストをリストとして用いる
  (format nil "~:@{[~A ~D]~}" '("a" 1) '("b" 2) '("c" 3))
  => "[a 1][b 2][c 3]"

  ;;; ゼロ終了指示の例
  ;引数がなければ終了
  (format nil "Done.~^ ~D warning~:P.~^ ~D error~:P.")
  => "Done."
  (format nil "Done.~^ ~D warning~:P.~^ ~D error~:P." 3)
  => "Done. 3 warnings."
  (format nil "Done.~^ ~D warning~:P.~^ ~D error~:P." 3 5)
  => "Done. 3 warnings. 5 errors."

  ;;; 反復指示とゼロ終了指示
  ;副リストの中の引数がもうなければ "~{" をそこで閉じる
  (format nil "~:{/~S~^ ...~}" '((hot dog) (hamburger) (ice cream) (french fries)))
  => "/hot .../hamburger/ice .../french ..."
  ;リストが終わりならそこで ":{" 全体を終了
  (format nil "~:{/~S~:^ ...~}" '((hot dog) (hamburger) (ice cream) (french fries)))
  => "/hot .../hamburger .../ice .../french"
  ;副リストの中の引数がもうなければ全体を終了
  (format nil "~:{/~S~#:^ ...~}" '((hot dog) (hamburger) (ice cream) (french fries)))
  => "/hot .../hamburger"

  ;;; 16進数のformat書式の書き方
  (format nil "~2,'0x" 10)
  => "0a"
  (format nil "~:@(~2,'0x~)" 10)
  => "0A"


■format-date
[Type       ]: Function
[Arguments  ]: format-date S FMT &optional UNIVERSAL-TIME
[Package    ]: editor
[Seealso    ]: decode-universal-time , format-date-string
[File       ]: timestmp.l
[Section    ]: 日付・時間
[Description]: 
書式に従って整形した日時をストリームに出力します。

  S              : 出力ストリームを指定します。
                   formatの様にtやnilを指定することはできません。
  FMT            : 日付用の書式文字列を指定します。
                   日付用の書式文字列はformat-date-stringを参照して下さい。
  UNIVERSAL-TIME : 出力する日時をユニバーサルタイム形式で指定します。
                   省略時は現在時刻が使われます。


■format-date-string
[Type       ]: Function
[Arguments  ]: format-date-string FMT &optional UNIVERSAL-TIME
[Package    ]: editor
[Seealso    ]: decode-universal-time , format-date
[File       ]: timestmp.l
[Section    ]: 日付・時間
[Description]: 
書式に従って整形した日時を文字列として返します。

  FMT            : 日付用の書式文字列を指定します。
  UNIVERSAL-TIME : 出力する日時をユニバーサルタイム形式で指定します。
                   省略時は現在時刻が使われます。

使用例：
  (format-date-string "%y/%m/%d %H:%M:%S" 3112500590)
  => "98/08/19 16:29:50"
  (format-date-string "%y年%#m月%#d日(%v)")
  => "99年11月10日(水)"

日付用の書式：
  書式文字については timestmp.l を参照して下さい。以下は抜粋です。 
  a: 短い形式の曜日
  A: 長い形式の曜日
  b: 短い形式の月
  B: 長い形式の月
  d: 日(00〜31)                 # (0〜31)
  e: 和暦の年(01〜)             # (1〜)
  E: 和暦の年(元, 02〜)         # (元, 2〜)
  g: 元号(明治,大正,昭和,平成)  # (明,大,昭,平)
  G: 元号(M, T, S, H)
  H: 時(00〜23)                 # (0〜23)
  I: 12時間の時(01〜12)         # (1〜12)
  i: Internet Time(000〜999)
  m: 月(01〜12)                 # (1〜12)
  M: 分(00〜59)                 # (0〜59)
  p: 午前/午後
  P: AM/PM                      # am/pm
  S: 秒(00〜59)                 # (0〜59)
  v: 曜日(日本語)
  y: 年(2桁)
  Y: 年(4桁)
  z: タイムゾーン名(JST-9)
  Z: タイムゾーン(+0900)        # (+09:00)


■format-drive
[Type       ]: Function
[Arguments  ]: format-drive &optional DRIVE QUICK
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
ドライブをフォーマットします。

  DRIVE : ドライブを文字で指定します。

使用例：
  (format-drive #\a t)
  => nil


■forward-char
[Type       ]: Function
[Arguments  ]: forward-char &optional (ARG 1)
[Package    ]: editor
[Seealso    ]: preceding-char , *prefix-args*
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
指定された文字数だけ右に移動します。改行があれば次行に移動します。

この関数は、ポイントを右に ARG 文字動かします(ARG が負の場合、左に動
かします)。バッファ(もしくは clipped 領域)の先頭や終端を越えてしまう場合、 
beginning-of-buffer か end-of-buffer エラーを出します。 

インタラクティブに呼ばれた場合、 ARG は数値のプレフィックスアーギュメ
ントになります。 

互換性： 
  Emacsではバッファの先頭ではエラーが発生します。xyzzyではエラーは発生し
  ません。その代わり、動けたときは t、動けなければ nil を返します。


■forward-line
[Type       ]: Function
[Arguments  ]: forward-line &optional (ARG 1)
[Package    ]: editor
[Seealso    ]: previous-line , forward-virtual-line , *prefix-args*
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
次行に移動します。

--- muleの説明 ---
Command: forward-line &optional count

この関数は、ポイントを今の位置から count 行下の行の先頭に動かします。 
count が負の場合、上に動かします。 

バッファ(もしくは clipped 領域)中に十分な行が存在しない場合、ポイントを
バッファ(もしくは clipped 領域) の先頭(もしくは終端)に動かします。 

count と実際に動いた行数との差を返します。 3 行しかないバッファの頭から 
5 行下に動かすよう指示すると、ポイントをその最後の行の終りに位置付け、2 
を返すことになります。 

インタラクティブに呼ばれた場合、 count は数値のプレフィックスアーギュメ
ントになります。


■forward-list
[Type       ]: Function
[Arguments  ]: forward-list &optional ARG NO-ERRORS
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
前方のリストの終端へ移動します。
  
  使用例:
    ;;; forward-list で移動する
    ;;; 
    ;;; ^ でポイント位置を表す
    (let ((hoge '(1 2))) (foo hoge) ...)
      ^ 最初はこの位置
    (let ((hoge '(1 2))) (foo hoge) ...)
                        ^ 一回
    (let ((hoge '(1 2))) (foo hoge) ...)
                              二回 ^


■forward-paragraph
[Type       ]: Function
[Arguments  ]: forward-paragraph &optional (ARG 1)
[Package    ]: editor
[Seealso    ]: backward-paragraph
[File       ]: paragrph.l
[Section    ]: ポジション
[Description]: 
カーソルを段落の末尾に移動します。


■forward-sexp
[Type       ]: Function
[Arguments  ]: forward-sexp &optional ARG NO-ERRORS
[Package    ]: editor
[Seealso    ]: backward-sexp
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
lisp-modeでS式を1つ進めます。

使用例：
  (forward-sexp)


■forward-virtual-line
[Type       ]: Function
[Arguments  ]: forward-virtual-line &optional (ARG 1)
[Package    ]: editor
[Seealso    ]: forward-line
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
表示行で次行へ移動します。


■forward-word
[Type       ]: Function
[Arguments  ]: forward-word &optional (ARG 1)
[Package    ]: editor
[Seealso    ]: backward-word
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
カーソルを前方の単語に移動します。


■fourth
[Type       ]: Function
[Arguments  ]: fourth X
[Package    ]: lisp
[Seealso    ]: cadddr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
cadddr の別名です。全く同じ動きをします。


■fresh-line
[Type       ]: Function
[Arguments  ]: fresh-line &optional OUTPUT-STREAM
[Package    ]: lisp
[Seealso    ]: terpri
[File       ]: builtin.l
[Section    ]: 入出力
[Description]: 
OUTPUT-STREAM が行の先頭ではないときだけ改行 (#\LFD) を出力します。


■fround
[Type       ]: Function
[Arguments  ]: fround NUMBER &optional DIVISOR
[Package    ]: lisp
[Seealso    ]: round
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
round と同じですが浮動小数点数を返します。


■ftruncate
[Type       ]: Function
[Arguments  ]: ftruncate NUMBER &optional DIVISOR
[Package    ]: lisp
[Seealso    ]: truncate
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
truncateと同じですが浮動小数点数を返します。


■funcall
[Type       ]: Function
[Arguments  ]: funcall FN &rest ARGUMENTS
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 評価
[Description]: 
引数を指定して関数を表すシンボルから関数を呼び出します。
FNには関数を表すシンボルでも関数でも構いません。引数の個数が静的に定まら
ない場合にはfuncallは向いていないので、その場合にはapplyを使います。

使用例：
  ;;; carをいろいろな呼び出し方でする。
  (car '(a b c))                => a
  (funcall 'car '(a b c))       => a
  (funcall #'car '(a b c))      => a

注意：
  funcallやapply等の様に関数を引数とする標準の関数は、carがlambdaの式や
  シンボルを内部的に関数に変換します。従って、関数を表すシンボルでも関数
  そのものでも構いません。


■function
[Type       ]: Special Form
[Arguments  ]: function FN
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 変数と定数
[Description]: 
関数の関数定義を返します。#'と同じです。

使用例：
  ;;; #'とfunctionとsymbol-functionを比べてみる。
  (defun foo (x) (* x 3))
  => foo
  #'foo
  => #<lexical-closure: foo>
  (function foo)
  => #<lexical-closure: foo>
  (symbol-function 'foo)
  => #<lexical-closure: foo>


■functionp
[Type       ]: Function
[Arguments  ]: functionp OBJECT
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
OBJECTが関数ならt、それ以外ならnilを返します。


■gc
[Type       ]: Function
[Arguments  ]: gc &optional NO-MESSAGE
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: その他
[Description]: 
（多分）ゴミ集めをします。


■gcd
[Type       ]: Function
[Arguments  ]: gcd &rest INTEGERS
[Package    ]: lisp
[Seealso    ]: lcm
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
引数の最大公約数を返します。

使用例：
  (gcd 91 70)
  => 7
  (gcd 63 -42 35)
  => 7
  (gcd -3)
  => -3
  (gcd 35 8)
  => 1


■gensym
[Type       ]: Function
[Arguments  ]: gensym &optional X
[Package    ]: lisp
[Seealso    ]: *gensym-counter* , make-symbol , unintern
[File       ]: evalmacs.l
[Section    ]: シンボル
[Description]: 
uninterned なシンボルを生成します。印字名は G の後に *gensym-counter* の
値をつなげたものです。

引数 X を指定すると、
  X が整数のときは *gensym-counter* の代わりに X の値が使われます。
  X が文字列のときは "G" の代わりに X の値が使われます。


■get
[Type       ]: Function
[Arguments  ]: get SYMBOL INDICATOR &optional DEFAULT
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: シンボル
[Description]: 
シンボルのプロパティを返します。

  SYMBOL    : プロパティを返すシンボル
  INDICATOR : プロパティのインジケータ

使用例：
  ;;; シンボルにプロパティを設定してみる。
  (get 'clyde 'species)                         => nil 
  (setf (get 'clyde 'species) 'elephant)        => elephant 
  (get 'clyde 'species)                         => elephant

  ;;; 関数の説明を取得してみる。
  (defun foo (x) "increment" (1+ x))            => foo
  (get 'foo 'lisp::function-documentation)      => "increment"


■get-buffer-alternate-file-name
[Type       ]: Function
[Arguments  ]: get-buffer-alternate-file-name &optional BUFFER
[Package    ]: editor
[Seealso    ]: set-buffer-alternate-file-name
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
バッファBUFFERに設定されたファイル名の別名を取得します。


■get-buffer-create
[Type       ]: Function
[Arguments  ]: get-buffer-create NAME
[Package    ]: editor
[Seealso    ]: create-new-buffer , バッファの内部構造
[File       ]: buffer.l
[Section    ]: バッファ
[Description]: 
指定した名前のバッファを返します。名前を指定しますが、同じ名前のバッファ
が既にあればそれを返します。無ければcreate-new-bufferで新しく作ります。

switch-to-bufferも良く似た動きをしますが、switch-to-bufferは
get-buffer-createを用いて実装されています。

  NAME : バッファの名前

使用例：
  ;;; *calc*がなければ作成する。
  (get-buffer-create "*calc*")
  => #<buffer: *calc*>


■get-buffer-file-name
[Type       ]: Function
[Arguments  ]: get-buffer-file-name &optional BUFFER
[Package    ]: editor
[Seealso    ]: set-buffer-file-name , get-file-buffer
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
バッファが参照しているファイルのフルパスを返します。
ファイルを参照していなければnilを返します。

  BUFFER : ファイルのフルパスを返すバッファを指定します。

使用例：
  ;;; カレントバッファのファイルのフルパスを返します。
  (get-buffer-file-name)
  => "C:/xyzzy/site-lisp/xmldoc/reference.xml"


■get-buffer-window
[Type       ]: Function
[Arguments  ]: get-buffer-window BUFFER &optional START-WINDOW
[Package    ]: editor
[Seealso    ]: window-buffer
[File       ]: builtin.l
[Section    ]: ウィンドウ
[Description]: 
バッファを表示しているウィンドウを返します。同じバッファが複数のウィンド
ウに表示されていますので、START-WINDOWから順番に探し始めます。
現在表示されてないバッファはnilが返ります。

  BUFFER       : 検索するバッファ
  START-WINDOW : 検索をし始めるウィンドウ

使用例：
  ;;; window-bufferも使ってみる。
  (selected-buffer)
  => #<buffer: *scratch*>
  (window-buffer (get-buffer-window (selected-buffer)))
  => #<buffer: *scratch*>


■get-clipboard-data
[Type       ]: Function
[Arguments  ]: get-clipboard-data
[Package    ]: editor
[Seealso    ]: copy-to-clipboard
[File       ]: builtin.l
[Section    ]: システム
[Description]: 
クリップボードの内容を文字列として取り出します。


■get-decoded-time
[Type       ]: Function
[Arguments  ]: get-decoded-time
[Package    ]: lisp
[Seealso    ]: decode-universal-time , format-date-string
[File       ]: builtin.l
[Section    ]: 日付・時間
[Description]: 
現在の時間を多値で返します。
  
  (get-decoded-time) == (decode-universal-time (get-universal-time))
  
使用例：
  (multiple-value-list (get-decoded-time))
  => (55 35 14 17 11 1999 2 nil -9)


■get-disk-usage
[Type       ]: Function
[Arguments  ]: get-disk-usage DIRECTORY &optional RECURSIVEP
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
指定されたディレクトリの容量を取得します。

  DIRECTORY  : 情報を取得するディレクトリを指定します。
  RECURSIVEP : サブディレクトリも再帰的にチェックするかを指定します。

戻り値は多値で返します。

  1 ブロックサイズ（バイト）
  2 全ディスク容量（バイト）
  3 空きディスク容量（バイト）
  4 ブロック単位の合計（バイト）
  5 ファイルサイズを単純に加算した合計（バイト）
  6 調べたディレクトリの個数
  7 調べたファイルの個数

使用例：
  (defun my-folder-size (my-dir)
    (interactive "Dfolder name: ")
    (let (my-dir-list (my-total-size  0))
      (setq my-dir-list (directory my-dir
                                   :wile "*.*"
                                   :absolute t
                                   :file-only t
                                   :recursive t
                                   :show-dots nil))
      (dolist (f my-dir-list)
        (setq my-total-size (+ my-total-size (file-length f))))
      (msgbox (format nil "フォルダの使用容量は、~d バイトです。"
                      my-total-size))))


■get-file-attributes
[Type       ]: Function
[Arguments  ]: get-file-attributes PATHNAME
[Package    ]: editor
[Seealso    ]: get-file-info
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
ファイルの属性を返します。ファイルサイズや最終更新日などの情報も一括して取
得したい場合には、get-file-infoを使用しましょう。

  PATHNAME : 属性を取得するファイル名を指定します。

戻り値は以下の値の合計で表されます。

  ed::*file-attribute-readonly*   : 読み取り専用
  ed::*file-attribute-hidden*     : 隠しファイル
  ed::*file-attribute-system*     : システムファイル
  ed::*file-attribute-directory*  : ディレクトリ
  ed::*file-attribute-archive*    : アーカイブ
  ed::*file-attribute-compressed* : 圧縮

使用例：
  ;;; c:\autoexec.batの属性を取得してみる。多分アーカイブになっているので
  ;;; ed::*file-attribute-archive*との論理積が0以外になる。
  (get-file-attributes "c:/autoexec.bat")
  => 32
  (= (get-file-attributes "c:/autoexec.bat") ed::*file-attribute-archive*)
  => t


■get-file-buffer
[Type       ]: Function
[Arguments  ]: get-file-buffer FILENAME
[Package    ]: editor
[Seealso    ]: get-buffer-file-name
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
ファイルを表示しているバッファを返します。
なければnilを返します。

使用例：  
  (get-file-buffer "not-documented.xml")
  => #<buffer: not-documented.xml>


■get-file-info
[Type       ]: Function
[Arguments  ]: get-file-info PATHNAME
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
ファイルの属性をまとめて取得します。属性・最終更新日・サイズ・短い
名前のリストの形式です。属性は以下の感じで。
  ed::*file-attribute-readonly*
  ed::*file-attribute-hidden*
  ed::*file-attribute-system*
  ed::*file-attribute-directory*
  ed::*file-attribute-archive*
  ed::*file-attribute-compressed*

使用例：
  (setq i (get-file-info (si:system-root)))
  => (16 3208385786 0 "XYZZY")
  (logand (car i) ed::*file-attribute-directory*)
  => 16
  (logand (car i) ed::*file-attribute-hidden*)
  => 0
  (format-date-string "%y/%m/%d %H:%M:%S" (cadr i))
  => "01/09/02 11:16:26"


■get-image-size
[Type       ]: Function
[Arguments  ]: get-image-size FILENAME
[Package    ]: editor
[File       ]: imagehdr.l
[Section    ]: その他
[Description]: 
指定された画像ファイルの縦・横・フォーマットを取得することが可能です。

使用例：
  ;;; imageタグを挿入してみる
  (require "imagehdr")
  (defun html-write-image-tag (file)
    (interactive "fJPEG, GIF, PNG : ")
    (multiple-value-bind (width height fmt)
      (get-image-size file)
      (insert (format nil "<IMG SRC=\"~a\" WIDTH=~d HEIGHT=~d>" file width height))))


■get-internal-real-time
[Type       ]: Function
[Arguments  ]: get-internal-real-time
[Package    ]: lisp
[Seealso    ]: internal-time-units-per-second , si:performance-counter
[File       ]: builtin.l
[Section    ]: 日付・時間
[Description]: 
内部的にGetTickCountを呼び出しています。GetTickCountはMSDNによると
システムを起動した後の経過時間を、ミリ秒（ms）単位で取得します。
この時間は、システムタイマの分解能による制限を受けます。
システムを 49.7 日間連続して動作させると、経過時間は 0 に戻ります。

だそうです。

使用例：  
  ;;普通に呼び出す。整数が帰ってくる
  (get-internal-real-time)
  =>984001406

  ;;書式付で起動時間を表示
  (let ((tick (get-internal-real-time))
        d h m s ms)
    (multiple-value-setq (tick ms)
        (truncate tick 1000))
    (multiple-value-setq (tick s)
        (truncate tick 60))
    (multiple-value-setq (tick m)
        (truncate tick 60))
    (multiple-value-setq (d h)
        (truncate tick 24))
    (format nil "PC起動経過時間 day ~D time ~2,'0D:~2,'0D:~2,'0D.~3,'0D" d h m s ms))
  =>"PC起動経過時間 day 11 time 09:20:04.578"


■get-menu
[Type       ]: Function
[Arguments  ]: get-menu MENU TAG-OR-POSITION &optional TAG-OR-POSITION-P
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: メニュー
[Description]: 
指定されたメニューから、タグ名または位置で検索したメニューを取得します。

  TAG-OR-POSITION   : タグもしくは位置を指定します。
  TAG-OR-POSITION-P : TAG-OR-POSITIONの引数をタグとして解釈するか位置と
                      して解釈するかを決めます。
           nil     TAG-OR-POSITIONはタグを表すシンボル
           non-nil TAG-OR-POSITIONは位置を表す整数値
使用例：
  (get-menu *app-menu* 3 t)


■get-menu-position
[Type       ]: Function
[Arguments  ]: get-menu-position MENU TAG
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: メニュー
[Description]: 
メニューの中からタグの位置を検索して返します。

  MENU : 検索するメニューを指定します。
  TAG  : 検索するタグを指定します。

見つからなかった場合にはnilが返されます。
見つかった場合にはその位置とそれを含むメニューを返します。


■get-properties
[Type       ]: Function
[Arguments  ]: get-properties PLACE INDICATOR-LIST
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: シンボル
[Description]: 
2番目の引数がリストになっているgetfです。
一致すると多値で値を返します。

使用例：
  ;;; get-propertiesで値を取得してみる。
  (get-properties '(ind1 10 ind2 20 ind3 30) '(ind2))
  => ind2
     20
     (ind2 20 ind3 30)


■get-selection-type
[Type       ]: Function
[Arguments  ]: get-selection-type
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
バッファの選択状態を返します。

  nil   選択なし、
  1     行モード選択状態
  2     文字モード選択状態
  3     矩形選択状態


■get-short-path-name
[Type       ]: Function
[Arguments  ]: get-short-path-name PATHNAME
[Package    ]: lisp
[Seealso    ]: truename
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
PATHNAMEの8.3形式でのパスを返します。
使用例：
  (setq a (merge-pathnames "xyzzy.exe" (si:system-root)))
  =>"C:/Applications/xyzzy/xyzzy.exe"

  (get-short-path-name a)
  =>"C:/APPLIC~2/xyzzy/xyzzy.exe"


■get-special-folder-location
[Type       ]: Function
[Arguments  ]: get-special-folder-location PLACE
[Package    ]: editor
[Seealso    ]: get-windows-directory , get-system-directory
[File       ]: builtin.l
[Section    ]: システム
[Description]: 
いろいろなフォルダへのパスを返します。

  PLACE : フォルダの種類を指定します。
    :start-menu
    :send-to
    :desktop
    :personal
    :programs
    :recent
    :startup
    :templates

参考：
  WindowsAPIのGetSpecialFolderLocation


■get-system-directory
[Type       ]: Function
[Arguments  ]: get-system-directory
[Package    ]: editor
[Seealso    ]: get-windows-directory , get-special-folder-location
[File       ]: builtin.l
[Section    ]: システム
[Description]: 
Windowsシステムフォルダまでのパスを返す。

使用例：
  (get-system-directory)
  => "C:/WINDOWS/System32/"


■get-universal-time
[Type       ]: Function
[Arguments  ]: get-universal-time
[Package    ]: lisp
[Seealso    ]: decode-universal-time , format-date-string
[File       ]: builtin.l
[Section    ]: 日付・時間
[Description]: 
現在の時間を返します。

使用例：
  (get-universal-time)
  => 3151806404


■get-window-handle
[Type       ]: Function
[Arguments  ]: get-window-handle &optional WINDOW
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: システム
[Description]: 
指定されたウィンドウのハンドルを返します。

  WINDOW : ハンドルを返すウィンドウを指定します。

使用例：
  ;;; カーソルがあるウィンドウのハンドルを返します。
  (get-window-handle (selected-window))


■get-window-start-line
[Type       ]: Function
[Arguments  ]: get-window-start-line &optional WINDOW
[Package    ]: editor
[Seealso    ]: current-virtual-line-number , current-line-number
[File       ]: builtin.l
[Section    ]: ウィンドウ
[Description]: 
ウィンドウの先頭行が表示行で何行目かを返します。

補足：
  どういった場合に起こりえるのか不明ですが、ウィンドウにバッファが関連付
  いていない場合は nil を返します。


■get-windows-directory
[Type       ]: Function
[Arguments  ]: get-windows-directory
[Package    ]: editor
[Seealso    ]: get-system-directory , get-special-folder-location
[File       ]: builtin.l
[Section    ]: システム
[Description]: 
Windowsフォルダへのパスを返します。

使用例：
  (get-windows-directory)
  => "C:/WINDOWS/"


■getf
[Type       ]: Function
[Arguments  ]: getf PLACE INDICATOR &optional DEFAULT
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: シンボル
[Description]: 
インジケータと値のリストから、インジケータに一致する値を取得します。

  (get x y) == (getf (symbol-plist x) y)

使用例：
  ;;; 実用性は無いけれどgetfを使って取得してみる。
  (getf '(ind1 10 ind2 20 ind3 30) 'ind2)
  => 20


■gethash
[Type       ]: Function
[Arguments  ]: gethash KEY HASH-TABLE &optional DEFAULT
[Package    ]: lisp
[Seealso    ]: maphash , make-hash-table
[File       ]: builtin.l
[Section    ]: ハッシュ
[Description]: 
ハッシュテーブルの中からキーが一致するものを返します。

  KEY        : 検索するキーを指定します。
  HASH-TABLE : ハッシュテーブルを指定します。

使用例：
  (setq hash-table (make-hash-table))
  => #<hash table>
  (gethash 'a hash-table)
  => nil
  (setf (gethash 'a hash-table) 1)
  => 1
  (gethash 'a hash-table)
  => 1

  (setq h (make-hash-table :test #'equalp))
  (setf (gethash "body" h) '(a b c))
  (gethash "BODY" h)


■gethash-region
[Type       ]: Function
[Arguments  ]: gethash-region FROM TO HASHTABLE &optional DEFAULT
[Package    ]: editor
[Seealso    ]: gethash
[File       ]: builtin.l
[Section    ]: ハッシュ
[Description]: 
リージョンの文字列をハッシュテーブルから取得します。
(buffer-substring FROM TO)してから(gethash ... HASHTABLE)するようなものです。


■global-set-key
[Type       ]: Function
[Arguments  ]: global-set-key KEY COMMAND
[Package    ]: editor
[Seealso    ]: global-unset-key
[File       ]: keymap.l
[Section    ]: キーマップ
[Description]: 
グローバルなキーマップにキーを登録します。

使用例：
 (global-set-key #\C-r          'previous-page)
 (global-set-key #\S-Left       'selection-backward-char)
 (global-set-key #\S-C-Left     'selection-backward-word)


■global-unset-key
[Type       ]: Function
[Arguments  ]: global-unset-key KEY
[Package    ]: editor
[Seealso    ]: global-set-key
[File       ]: keymap.l
[Section    ]: キーマップ
[Description]: 
グローバルなキーマップのキーの割り当てを解除します。

使用例：
  ;;; global-set-keyで割り当てたキーを解除してみる。
  (global-set-key #\C-r 'previous-page)
  => t
  (global-unset-key #\C-r)
  => t


■goal-column
[Type       ]: Function
[Arguments  ]: goal-column
[Package    ]: editor
[Seealso    ]: set-goal-column
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
現在のゴールカラムを取得します。
[xyzzy:06371] あたりのスレッドを見ると、save-excursionでゴールカラムが保
存されないのは仕様のようです。


■goto-bol
[Type       ]: Function
[Arguments  ]: goto-bol
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
行頭に移動します。

互換性：
  xyzzyオリジナルのようです。
  効率がいいのでこれを使うのが推奨されているみたい。


■goto-char
[Type       ]: Function
[Arguments  ]: goto-char POINT
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
指定された位置にカーソルを移動します。この位置はpoint, point-min, 
point-max等のポイントを返す関数を使用することで得ることが可能です。

--- muleの説明 ---
この関数は、カレントバッファのポイントを(カレントバッファの) position に
設定します。 position が 1 以下の場合、ポイントをバッファの先頭に設定し
ます。バッファの長さ以上の場合、ポイントをバッファの終端に設定します。 

clipping 制限が用いられた場合も、この position は(以前として)そのバッフ
ァの先頭から計られますが、 clipped 領域の外に示された position は clipped 
領域の先頭か終端の位置となります。 

インタラクティブに呼ばれた場合、(それが与えれている場合) position はプレ
フィックスアーギュメントになり、(与えられてない場合) ミニバッファから読
み込みます。 
goto-char は position を返します。


■goto-column
[Type       ]: Function
[Arguments  ]: goto-column COLUMN &optional EXCEED-P
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
指定された桁位置に移動します。移動した後の桁位置を返します。
current-line-columnsが返す値よりも大きな値を指定した場合には、行の終端に
位置します。負の数を指定した場合には、行の先頭に位置します。

  COLUMN : 桁数


■goto-eol
[Type       ]: Function
[Arguments  ]: goto-eol
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
行末に移動します。

互換性：
  xyzzyオリジナルのようです。
  効率がいいのでこれを使うのが推奨されているみたい。


■goto-last-modified-line
[Type       ]: Function
[Arguments  ]: goto-last-modified-line
[Package    ]: editor
[File       ]: cmds.l
[Section    ]: バッファ
[Description]: 
現在のバッファで最近変更された行の先頭に移動します。


■goto-line
[Type       ]: Function
[Arguments  ]: goto-line LINE
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
指定された行番号にジャンプします。折り返しを有効にしていて表示行にジャン
プしたい場合には、goto-virtual-lineを使用します。

この関数は、(バッファの先頭を 1 行目と数え) line 行目の行の先頭にポイン
トを設定します。 line が 1 より小さい場合、ポイントをバッファの先頭に置
きます。バッファ中の行数より大きい場合、バッファ最後の行の終りに設定しま
す。 

clipping 制限が用いられた場合、 line は(まだ)そのバッファの先頭から数え
ますが、clipped 領域の外に line が指定されると、ポイントは clipped 領域
の先頭か終りに位置付けられることになります。 

インタラクティブに呼ばれた場合、(与えられている場合) line は数値のプレフ
ィックスアーギュメントになります。そうでない場合、 line をミニバッファか
ら読み込みます。


■goto-marker
[Type       ]: Function
[Arguments  ]: goto-marker MARKER
[Package    ]: editor
[Seealso    ]: set-marker , goto-char
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
マーカーのポジションへポイントを移動します。
goto-char と違い、ポイント（数字）を引数として受け取ることはできません。


■goto-matched-parenthesis
[Type       ]: Function
[Arguments  ]: goto-matched-parenthesis &optional ARG
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
ポイントに存在するキャラクタが、syntax-open-pもしくはsyntax-close-pを満
たす場合に、対応するキャラクタに移動します。対応する各種括弧に移動するの
に使われます。


■goto-virtual-bol
[Type       ]: Function
[Arguments  ]: goto-virtual-bol
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
表示行の行頭に移動します。
※実際の表示が表示行／物理行には依存しません。


■goto-virtual-column
[Type       ]: Function
[Arguments  ]: goto-virtual-column COLUMN &optional EXCEED-P
[Package    ]: editor
[Seealso    ]: goto-column
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
指定された表示桁へ移動します。

  COLUMN   : 移動する表示桁位置を指定します。
  EXCEED-P : （詳細不明）

表示桁が折り返しの桁位置よりも大きいときは、折り返しの桁位置で止まります。
※実際の表示が表示行／物理行には依存しません。


■goto-virtual-eol
[Type       ]: Function
[Arguments  ]: goto-virtual-eol
[Package    ]: editor
[Seealso    ]: goto-eol
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
表示行の行末に移動します。
※実際の表示が表示行／物理行には依存しません。


■goto-virtual-line
[Type       ]: Function
[Arguments  ]: goto-virtual-line LINE
[Package    ]: editor
[Seealso    ]: goto-line
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
表示行での指定行に移動します。
ウィンドウの表示行／物理行の切替は、「共通設定」−「表示」−「行番号は表示行(D)」
で行います。

参考：
  ファイルイメージ： 
    001| ABCDEFGHIJKLMNOPQR
    002| ABCDEFGHIJKLMNOPQRS
    003| ABCDEFGHIJKLMNOPQRST
    004| ABCDEFGHIJKLMNOPQRSTU
    005| ABCDEFGHIJKLMNOPQRSTUV

                    │
      ┌──────┴──────┐
      ↓                          ↓

  物理行：                        表示行：                      
    001| ABCDEFGHIJKLMNOPQR         001| ABCDEFGHIJKLMNOPQR
    002| ABCDEFGHIJKLMNOPQRS        002| ABCDEFGHIJKLMNOPQRS
    003| ABCDEFGHIJKLMNOPQRST       003| ABCDEFGHIJKLMNOPQRST
    004| ABCDEFGHIJKLMNOPQRST       004| ABCDEFGHIJKLMNOPQRST
       | U                          005| U
    005| ABCDEFGHIJKLMNOPQRST       006| ABCDEFGHIJKLMNOPQRST
       | UV                         007| UV


■handler-case
[Type       ]: Macro
[Arguments  ]: handler-case FORM &rest CASES
[Package    ]: lisp
[Seealso    ]: ignore-errors , unwind-protect , error
[File       ]: handler.l
[Section    ]: エラー
[Description]: 
例外をキャッチします。
詳細はエラー処理関連を参照してください。キャッチした例外は
si:*condition-stringで対応する文字列を取得できるようです。

  (handler-case
    例外が発生しそうな処理
    (エラーのシンボル1 (仮引数1) エラー処理1)     
    (エラーのシンボル2 (仮引数2) エラー処理2)     
    (エラーのシンボル3 (仮引数3) エラー処理3))

例えば、例外が発生しそうな処理で(error エラーシンボル2)が起きると、途中
の処理をすっとばして、エラー処理2が実行されます。そこで対応出来れば処理
を継続しますが、対応できなければ(error 仮引数2)を実行して、より上位の
handler-caseに対応をお願いします。どこまでいっても対応できなければ、
xyzzyがエラーダイアログを出して処理を終了します。

使用例：
  ;;; 例外が出ても、個々に対応しつつ処理を継続する場合
  ;;; with-output-to-stringを使ってるのは変数が煩わしいから
  (with-output-to-string (out)
    (dolist (i '((6 3) (6 0) (6 "a")))
      (handler-case
          (/ (car i) (cadr i))
        (division-by-zero (c)
          (format out "division-by-zero: ~a~%" (si:*condition-string c)))
        (error (c)
          (format out "error:\t ~a~%" (si:*condition-string c))))))
  => "division-by-zero: 0で除算しました: /: (6 0)
      error:     不正なデータ型です: \"a\": number"


■hash-table-count
[Type       ]: Function
[Arguments  ]: hash-table-count HASH-TABLE
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: ハッシュ
[Description]: 
ハッシュテーブルの要素数を返します。

  HASH-TABLE : ハッシュテーブルを指定します。


■hash-table-p
[Type       ]: Function
[Arguments  ]: hash-table-p OBJECT
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: ハッシュ
[Description]: 
オブジェクトがハッシュテーブルかどうかを返します。

  OBJECT : 判定するオブジェクトを指定します。

  (hash-table-p x) == (typep x 'hash-table)


■hash-table-rehash-size
[Type       ]: Function
[Arguments  ]: hash-table-rehash-size HASH-TABLE
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: ハッシュ
[Description]: 
ハッシュテーブルの現在のrehash-sizeを返します。

  HASH-TABLE : ハッシュテーブルを指定します。


■hash-table-size
[Type       ]: Function
[Arguments  ]: hash-table-size HASH-TABLE
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: ハッシュ
[Description]: 
ハッシュテーブルの現在の大きさを返します。

  HASH-TABLE : ハッシュテーブルを指定します。


■hash-table-test
[Type       ]: Function
[Arguments  ]: hash-table-test HASH-TABLE
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: ハッシュ
[Description]: 
ハッシュテーブルのキーを比較する関数を返します。

  HASH-TABLE : ハッシュテーブルを指定します。

使用例：
  (hash-table-test hash-table)
  => eql


■hide-command-bar
[Type       ]: Function
[Arguments  ]: hide-command-bar SYM
[Package    ]: editor
[Seealso    ]: show-command-bar
[File       ]: cmdbar.l
[Section    ]: メニュー
[Description]: 
define-command-barで定義したコマンドバーを非表示にします。


■hide-restricted-region
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: narrow-to-region
[Section    ]: リージョン
[Description]: 
narrow-to-regionした領域を非表示にするか薄く表示するかを制御します。

  t   : 非表示にします。
  nil : 薄く表示します。


■hide-tool-bar
[Type       ]: Function
[Arguments  ]: hide-tool-bar NAME
[Package    ]: editor
[Seealso    ]: show-tool-bar
[File       ]: builtin.l
[Section    ]: メニュー
[Description]: 
ツールバーNAMEを非表示にします。


■if
[Type       ]: Special Form
[Arguments  ]: if TEST THEN [ELSE]
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 制御構造
[Description]: 
いわゆるIF文を実行します。
TESTがnon nilならTHENを実行。nilならELSEを実行します。

構文：
  (if TEST THEN [ELSE])


■ignore-errors
[Type       ]: Macro
[Arguments  ]: ignore-errors &body BODY
[Package    ]: lisp
[Seealso    ]: handler-case , unwind-protect
[File       ]: handler.l
[Section    ]: エラー
[Description]: 
本体を評価したときに発生するエラーを全て無視します。
エラーが発生した場合には、ignore-errorsはnilを返します。

C++の場合：
  try {
    return resolve_shortcut("c:\\autoexec.bat");
  } catch (...) {
    return nil;
  }

xyzzyの場合：
  (ignore-errors  (resolve-shortcut "c:/autoexec.bat"))


■ignored-extensions
[Type       ]: Variable
[Package    ]: editor
[File       ]: defs.l
[Section    ]: ミニバッファ
[Description]: 
ミニバッファでの入力補完において、ignored-extensionsの拡張子がついたファ
イルは補完の対象になりません。

使用例：
  ; exeとdllは入力補完しない
  (setq ignored-extensions '("exe" "dll"))


■imagpart
[Type       ]: Function
[Arguments  ]: imagpart NUMBER
[Package    ]: lisp
[Seealso    ]: realpart , complex
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
複素数の虚数部を取得します。

使用例：
  (setq a (complex 1 3))
  =>#C(1 3)

  (imagpart a)
  =>3


■ime-push-composition-string
[Type       ]: Function
[Arguments  ]: ime-push-composition-string &optional NODELETE
[Package    ]: editor
[File       ]: kanji.l
[Section    ]: 文字列
[Description]: 
セレクションの確定済仮名文字を非確定状態にします。[C-c C-p]


■ime-register-word-dialog
[Type       ]: Function
[Arguments  ]: ime-register-word-dialog
[Package    ]: editor
[File       ]: kanji.l
[Section    ]: ダイアログ
[Description]: 
単語/用例登録ダイアログを表示します。[C-c C-r]
セレクションがあれば、セレクションの文字列を語句とします。


■import
[Type       ]: Function
[Arguments  ]: import SYMBOLS &optional PACKAGE
[Package    ]: lisp
[Seealso    ]: パッケージ
[File       ]: builtin.l
[Section    ]: パッケージ
[Description]: 
シンボルのリストを指定して、その全てのシンボルをパッケージ内でパッケージ
名指定なしでアクセスできるようにします。シンボルが既にパッケージ内に存在
する場合は例外を発生します。


■in-package
[Type       ]: Macro
[Arguments  ]: in-package NAME
[Package    ]: lisp
[Seealso    ]: パッケージ , *package*
[File       ]: package.l
[Section    ]: パッケージ
[Description]: 
どのパッケージで実行するかを変更します。変更した後に作られたシンボルは、
指定されたパッケージに登録されます。

使用例：
    ;;; これ以降新しく作られるシンボルは、"editor"パッケージに登録さ
    ;;; れるようになる。
    (in-package "editor")


■incf
[Type       ]: Macro
[Arguments  ]: incf PLACE &optional (DELTA 1)
[Package    ]: lisp
[Seealso    ]: decf
[File       ]: setf.l
[Section    ]: 数値
[Description]: 
変数をインクリメントします。

使用例：
  ;;; 変数xの値をインクリメントする。
  (setq x 1)    => 1
  (incf x)      => 2
  x             => 2


■indent-for-comment
[Type       ]: Function
[Arguments  ]: indent-for-comment
[Package    ]: editor
[File       ]: cmds.l
[Section    ]: テキスト
[Description]: 
行末にコメント文字列 (comment-start, comment-end) を挿入します。[ESC ;]
コメント位置は comment-indent-function を呼び出した結果で決まります。

コメント挿入後のカーソル位置は comment-start-skip か
comment-start-skip-function で指定できます。


■indent-region
[Type       ]: Function
[Arguments  ]: indent-region FROM TO
[Package    ]: editor
[File       ]: lispmode.l
[Section    ]: リージョン
[Description]: 
mode-specific-indent-commandがnon-nilならば、指定のリージョンを
mode-specific-indent-commandで一行ずつインデントします。
行末はdelete-trailing-spacesで空白を削除されます。


■indent-relative
[Type       ]: Function
[Arguments  ]: indent-relative
[Package    ]: editor
[File       ]: cmds.l
[Section    ]: テキスト
[Description]: 
半角スペースやタブ以外の文字を後方へ向かって検索し、最初に見つかった
場所の行のインデント幅と同じだけ現在行をインデントします。

ちなみに emacs の同名のコマンドとは挙動が違います。


■indent-to
[Type       ]: Function
[Arguments  ]: indent-to COLUMN
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: テキスト
[Description]: 
指定された桁数までインデントします。現在のカーソル位置が引数より小さけれ
ばスペースを挿入します。そうでなければ何もしません。

  COLUMN : インデントする桁数を指定します。

戻り値は以下のとおりです。

  t   インデントした場合
  nil 何もしなかった場合


■insert
[Type       ]: Function
[Arguments  ]: insert &rest STRING-OR-CHAR
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: テキスト
[Description]: 
文字列をバッファに挿入します。

  STRING-OR-CHAR : 挿入する文字列を指定します。
                   &restで受けられているので何個でもOKです。

履歴：
  xyzzyのバージョン0.0.0.45.1よりまえのバージョンでは
  Emacsとinsertの仕様が、やや異なっていました。

  ;;; Emacsの場合
  (insert "abc" "def" "ghi")
  => "abcdefghi"が挿入される

  ;;; xyzzyの場合
  (insert "ab" 4)
  => "abababab"が挿入される

  xyzzyのバージョン0.0.0.45.1以降、Emacsとのinsert互換性が高まって
  います。

  (insert "foo")         => foo          ; 今までと同じ
  (insert "foo" 2)       => foofoo       ; 今までと同じ
  (insert "foo" "bar")   => foobar       ; Emacsと同じ
  (insert "foo" "bar" 2) => foobarfoobar
  (insert #\f "o" #\o)   => foo          ; Emacsと同じ
  (insert #\f "o" #\o 2) => foofoo
  (insert 2)             => エラー
  (insert "foo" 2 "bar") => エラー
  (insert 102 111 111)   => エラー       ; Emacsは  => foo


■insert-buffer
[Type       ]: Function
[Arguments  ]: insert-buffer BUFFER
[Package    ]: editor
[Seealso    ]: insert-buffer-substring
[File       ]: buffer.l
[Section    ]: バッファ
[Description]: 
指定されたバッファの内容を現在のバッファに挿入します。


■insert-buffer-substring
[Type       ]: Function
[Arguments  ]: insert-buffer-substring BUFFER &optional FROM TO
[Package    ]: editor
[Seealso    ]: insert-buffer
[File       ]: buffer.l
[Section    ]: バッファ
[Description]: 
指定されたバッファの内容を現在のバッファに挿入します。
リージョンが指定されていればその領域を挿入します。


■insert-file
[Type       ]: Function
[Arguments  ]: insert-file FILENAME &optional ENCODING
[Package    ]: editor
[Seealso    ]: find-file
[File       ]: files.l
[Section    ]: ファイルシステム
[Description]: 
指定されたファイルをカーソルの位置に読み込みます。

--- mule の説明 ---
Command: insert-file filename

この関数は、ファイル filename の内容をカレントバッファのポイントの後に挿
入します。 filename が読み込み可能なファイルでない場合、エラーになります。
これはインタラクティブに用いるためのもので insert-file-contents 以外のこ
とは (ほとんど)何も行ないません。


■insert-file-contents
[Type       ]: Function
[Arguments  ]: insert-file-contents FILENAME &optional VISIT-P OFFSET SIZE
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
ファイルの内容をカーソル位置に挿入します。

  FILENAME : 挿入するファイル名
  VISIT-P  : ファイルを挿入後の動作を指定します。
        t       変更フラグ・UNDO情報のクリア、ファイルの日付の変更等を行います。
        nil     特に何もしません。
  OFFSET   : 挿入するオフセット
  SIZE     : 挿入する長さ

使用例：
  ;;; 簡単なテンプレートの挿入例
  ;;; site-lisp/template.lを用意しておくこと
  (defun insert-template ()
    (and (get-buffer-file-name)
         (not (file-exist-p (get-buffer-file-name)))
         (insert-file-contents (merge-pathnames "site-lisp/template.l" (si:system-root)) t)
         (message "template inserted")))
  => insert-template
  (add-hook '*lisp-mode-hook* 'insert-template)
  => (insert-template lisp-load-keyword-file)


■insert-menu-item
[Type       ]: Function
[Arguments  ]: insert-menu-item MENU POSITION TAG ITEM &optional COMMAND INIT
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: メニュー
[Description]: 
メニュー項目を作成しメニューの所定の位置に挿入します。

  MENU     : 追加先のメニューを指定します。
  POSITION : 挿入する位置を指定します。
  TAG      : 識別するタグを指定します。必要なければnilを指定します。
  ITEM     : メニューに表示される名前を指定します。
  COMMAND  : メニューの項目が選択されたときに実行するコマンドを指定します。
  INIT     : メニューが開く直前に評価し返される値によってメニューの状態
             を設定します。詳細はadd-menu-itemを参照して下さい。


■insert-menu-separator
[Type       ]: Function
[Arguments  ]: insert-menu-separator MENU POSITION &optional TAG
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: メニュー
[Description]: 
セパレータをメニューの所定の位置に挿入します。

  MENU     : 追加先のメニューを指定します。
  POSITION : 挿入する位置を指定します。
  TAG      : 識別するタグを指定します。


■insert-popup-menu
[Type       ]: Function
[Arguments  ]: insert-popup-menu MENU POSITION POPUP-MENU MENU-NAME
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: メニュー
[Description]: 
ポップアップメニューをメニューの所定の位置に挿入します。

  MENU       : 追加先のメニューを指定します。
  POSITION   : 挿入する位置を指定します。
  POPUP-MENU : 追加するポップアップメニューを指定します。
  NAME       : メニューに表示される名前を指定します。

使用例：
  ;;; 右クリックメニューを標準のメニューに追加してみる。
  (insert-popup-menu *app-menu* 2 *app-popup-menu* "編集2(&E)")
  => #<menu 48701736>


■insert-register
[Type       ]: Function
[Arguments  ]: insert-register R
[Package    ]: editor
[Seealso    ]: copy-to-register
[File       ]: register.l
[Section    ]: リージョン
[Description]: 
レジスタ R の内容をバッファに挿入します。
R にテキストまたは矩形領域が入っていないとエラーになります。


■integerp
[Type       ]: Function
[Arguments  ]: integerp OBJECT
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
OBJECTがintegerならt、それ以外ならnilを返します。

  (integerp x) == (typep x 'integer)


■interactive
[Type       ]: Special Form
[Arguments  ]: interactive {INTERACTIVE-STRING {PARAMETER}*|LIST}
[Package    ]: editor
[Seealso    ]: commandp , buffer-modified-p
[File       ]: builtin.l
[Section    ]: 関数
[Description]: 
対話的なマクロ関数の定義は、必ずinteractiveを指定する必要があります。
以下の場面で使われるマクロ関数は対話的でなければなりません。

  1) M-x から呼び出す場合
  2) define-key, global-set-key でキーバインドする場合
  3) ツールバーに登録する場合

以下のように引数を対話的に渡すことも可能です。

  ;;; 引数が何もない時
  (defun foo ()
    (interactive) ... )

  ;;; 引数がある時
  (defun foo (n)
    (interactive "nPercent: ") ... )

nPercent:のうち最初の１文字(ここではn）だけが以下のような意味を持ちます。
２文字目以降(Percent:)は,ミニバッファに表示される説明の文字列になります。

  b   既に存在するバッファの名前
  f   既に存在するファイルの名前
  n   数字（整数）
  s   文字列
  B   バッファの名前（存在しなくてもよい）
  F   ファイルの名前  （存在しなくてもよい）
  N   数字。ただし、コマンドがプレフィックス付きで起動された場合は、
      それを用いる
  S   シンボル
  D   ディレクトリ
  l（エル）  ファイルの複数選択です。ファイル名のリストが取れます。

  :title0 "mojiretsu"
  :default0 "bar"
                  :default0 , :default1, :default2というように指定できます
  :history0 'execute

--99/08/23追加
 1. (interactive "0C \n1s \n2b") みたいに、
    制御文字(って言うのでしょうか？)の前に数字を
    いれられるようなのですが、これはどういう意味
    を持つのでしょうか？
    # misc.l の execute-extended-command に実例
    # がありますけど、さっぱ分かりまへん。(^^;

0 のとき、プロンプトに数引数がつきます。それ以外の場合
は無視されます。結局、たいした意味はありません(^^;

|  2. (interactive "s何？ : " :history0 "ん？") と
|     いった、:history[01]? とその組みになる引数は、
|     どういう働きをするんでしょうか？

ミニバッファを初期化する際に呼ばれる *enter-minibuffer-hook* 
(minibuf.l の prologue-minibuffer)の引数に使われます。
ちなみに、minibuffer-initialize の設計はたぶん間違って
ます。


--------------以下muleの説明---------------------------
Special Form: interactive [arg-descriptors]

この特殊フォームは、(これを持つ)関数がコマンドであること、(つまり) "M-x 
か、それにバインドされたキーを入力することでインタラクティブに呼び出すこ
とができる" こと、を宣言します。 arg-descriptors は、"(対象とする)関数を
インタラクティブに呼ぶ場合、どのようにアーギュメントを与えるか" を示しま
す。 interactive は(呼ばれた場合)何も行ないません。 arg-descriptors の評
価も行なわず、(常に) nil を返します。 arg-descriptors が与えられない場合、 
(対象とする)関数はアーギュメントを持たずに呼ばれます。もちろん、(対象と
する)関数が 1 つ以上のアーギュメントを必要とする場合、エラーになります。 

arg-descriptors がストリングでない場合、それは、評価によって (対象とする) 
関数に渡されるアーギュメントのリストが得られるフォームでなくてはいけませ
ん。 

arg-descriptor がストリングの場合、このストリングは (そのコード文字が必
要とする場合) プロンプトを後に続けたコード文字で構成されてなくてはいけま
せん。プロンプトは、ストリングの終りかニューラインで終ります。ニューライ
ンの後 (次のアーギュメント用の) 2 番目のコード文字とプロンプトとを与える
ことができます(以下同様)。 

ストリングの最初の文字が * の場合、バッファがリードオンリーである場合エ
ラーを出し(訳注：signal)ます。この場合、(その)次の文字を最初のコード文字
として用います。 

コード文字の多くは、(その)アーギュメントが既存の何か (バッファ、関数、フ
ァイル名、等) の名前でなくてはいけないことを指示します。このような場合、 
(Emacs により)デフォルトのものが与えられるとともに、正しくない (訳注：条
件に合わない)名前は受け入れられなくなります (Emacs は `[No Match]' と文
句を言い、プロンプトを出し、再び名前を求めます)。 TAB, SPC, RET は、関数 
completing-read に従い名前の completion を行ないます。 

以下のテーブルにおいて、"completion" とマークされたコード文字は completion 
を行ないます。 "existing" とマークされたものは(既存の)名前を要求します。 
"default" とマークされたものはデフォルトを持ちます。 "prompt" はプロンプ
トを持たなくてはいけません。 

a 

  関数名(i.e., fboundp である(訳注：fboundp を満たす)シンボル)。
  existing, completion, prompt
  b
  バッファ名。existing, completion, prompt
  B
  バッファ名。completion, prompt
  c
  文字。prompt
  C
  コマンド名(i.e. インタラクティブ関数)。existing, completion,
  prompt
  d
  ポイントのポジションを数値として用います。No I/O
  D
  ディレクトリ名。existing, completion, default, prompt
  f
  関数名。existing, completion, default, prompt
  F
  関数名。existing, default, prompt
  k
  キーシーケンス。 (カレントなキーマップで) コマンドか undefined さ
  れたコマンドが見つかるまで文字を読み込み、そのキーシーケンスをスト
  リングとして関数に渡します。カーソルはエコーエリアに移動しません。
  prompt
  m
  (数値としての)マークのポジション。No I/O
  n
  数値。数値を必要とします。prompt
  N
  未処理のプレフィックスアーギュメントを関数に渡します。プレフィック
  スアーギュメントが nil の場合、 (n におけるように)数値を読み込みま
  す。数値を必要とします。prompt
  p (小文字のp)
  処理されたプレフィックスアーギュメントを関数に渡します。No I/O
  P (大文字のP)
  未処理のプレフィックスアーギュメントを関数に渡します。No I/O
  r
  ポイントとマークを、関数に対する 2つの(数値の) アーギュメントとし
  て(小さい方を先にして)渡します。 No I/O
  s
  ストリングを読み込み、LFD か RET でターミネートします。このどちら
  も(訳注：LFD も RETも) C-q を用いることでストリングに含めることは
  できます。 prompt
  S
  ストリングを読み込み、空白(訳注：whitespace) 文字のどれかでターミ
  ネートします。読み込まれたものは、シンボルとして intern されます。
  C-q を用いることで空白文字をストリングに含めることはできます。通常
  シンボルをターミネートする文字(e.g., ()[])は (訳注：ここではこのス
  トリングを)ターミネートしません。 prompt
  v
  ユーザーオプションとして宣言された変数(i.e., user-variable-p)。
  existing, completion, prompt
  x
  Lisp フォームを読み込み、LFD か RET でターミネートします。
  読み込まれるストリングが閉じのダブルクォートをタイプする前にターミ
  ネートされた場合、閉じのダブルクォートを追加します。リストやベクト
  ルを読み込んでいて、最後の閉じの ) や ] の前にターミネートされた場
  合、エラーを出します。 (訳注：読み込んだ)フォームは評価しません。
  prompt
  X
  (x におけるように)フォームを読み込んだ後、評価し、その結果を関数に
  渡します。 prompt
  (defun foo1 ()                    ;foo1 はアーギュメントを取らず、
      (interactive)                 ;2 word 先に移動させるだけ。
      (forward-word 2))
  => foo1
  (defun foo2 (n)                   ;foo2 はアーギュメントを 1つ取り、
      (interactive "p")             ;それは 処理されたプレフィックスである。
      (forward-word (* 2 n)))
  => foo2
  (defun foo3 (n)                 ;foo3 はアーギュメントを 1つ取り、
      (interactive "nCount:")     ;それは ミニバッファから読み込まれる。
      (forward-word (* 2 n)))
  => foo3
  (defun three-b (b1 b2 b3)
    "Select three existing buffer (prompting for them in the Minibuffer)
  Put them into three windows, selecting the last one."
      (interactive "bBuffer1:\nbBuffer2:\nbBuffer3:")
      (delete-other-windows)
      (split-window (selected-window) 8)
      (switch-to-buffer b1)
      (other-window 1)
      (split-window (selected-window) 8)
      (switch-to-buffer b2)
      (other-window 1)
      (switch-to-buffer b3)
    )
  => three-b
  (three-b "*scratch*" "declarations.texinfo" "*mail*")
  => nil

  参照 commandp
=================
以下、花井 達さん作

===制御文字リスト 凡例===

(書式)
制御文字 {属性}[最終変換値]     入力値

{属性}
 E: Existing     存在するモノを入力しない限り終わらない
 C: Completion   入力候補表示・補完あり
 P: Prompt       ミニバッファでユーザー入力
 D: Dialog       ダイアログ表示することも

[最終変換値]
{xx}    - 関数には xxx 型の値がくる
{xx/yy} - 入力値が省略又は未定義値だと、yy型がくる。
{xx|yy} - 入力値が多重値だと、yy の型でくる
{*****} - なんでもあり

===制御文字リスト===
a       {ECP }[symbol]          関数名。
b       {ECP }[buffer]          バッファ名。
B       { CP }[buffer/string]   バッファ名。
c       {  P }[character]       キー入力キャラクタ。
C       {ECP }[symbol]          インタラクティブコマンド。
d       {    }[integer]         選択バッファ上での位置。
D       {ECPD}[string]          ディレクトリ。
e       { CP }[string]          実行可能ファイル。
f       { CPD}[string]          ファイル。
F       { CP }[string]          ファイル。
k       {  P }[character|cons]  キーシーケンス。
l       {ECPD}[string|cons]     ファイル。複数可。
m       {    }[integer]         マーク。
M       {    }[integer]         選択開始位置。
n       {  P }[integer/nil]     数値。
N       {  P }[integer/nil]     数値。前置引数(c-u)を優先採用。
p       {    }[integer]         前置引数による数値。
P       {    }[integer/nil]     前置引数による数値。
r       {    }[integer]         リージョン。マークが先に来る。
R       {    }[integer]         選択範囲。開始位置が先に来る。
s       {  P }[string]          文字列。
S       { CP }[symbol]          シンボル。
v       {ECP }[symbol]          変数。
x       {  P }[*****]           lisp式。
X       {  P }[*****]           lisp式。関数には評価後の値が渡る

AgGhHiIjJKoOqQtTuUVwWyYzZ       いまのところ使えない

===その他===
*       interactive 文字列の先頭がこれになってるときは、
        選択バッファが ReadOnly だとエラーにしちゃう。
          (interactive "*fFiles : ")   ;;; こんな感じ
\n      複数の制御文字を使う場合、これで区切る
          (interactive "*fFiles : \np")::: こんな感じ
0       各制御文字の前に置いておくと、プロンプトに
        前置引数(C-u)が挿入されて表示される。
          (interactive "0fFiles : ")   ::: こんな感じ
1-9     各制御文字の前に置けるけど、とりあえず意味無し。


■interactive-p
[Type       ]: Function
[Arguments  ]: interactive-p
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: 評価
[Description]: 
実行中の関数がinteractiveに呼ばれていればt、そうでなければnilを返します。

使用例：
  ;;; fooとbarという関数を定義して、fooをinteractiveに呼び出してみる。
  ;;; fooはinteractive扱いされているが、barはそうでない。
  (defun foo () (interactive) (msgbox "foo: ~A" (interactive-p)) (bar))
  => foo
  (defun bar () (interactive) (msgbox "bar: ~A" (interactive-p)))
  => bar
  M-x: foo
  => [foo: t]
     [bar: nil]


■intern
[Type       ]: Function
[Arguments  ]: intern STRING &optional PACKAGE
[Package    ]: lisp
[Seealso    ]: find-symbol , symbol-name , unintern , make-symbol , パッケージ
[File       ]: builtin.l
[Section    ]: パッケージ
[Description]: 
文字列からシンボルを作成します。作成したシンボルは指定されたパッケージに
internされます。make-symbolも文字列からシンボルを作り出しますが、パッケ
ージにinternされません。

  STRING  : 文字列
  PACKAGE : 作成したシンボルを登録するパッケージ

使用例：
  ;;; foobarというシンボルが*package*に登録される
  (intern "foobar")
  => foobar

  ;;; foobazというシンボルがlispパッケージに登録される。
  (intern "foobaz" (find-package "lisp"))
  => foobaz

--- 原文 ---
Description: Similar to find-symbol but creates a new symbol if a match 
is not found for string. The new symbol with print name string is created 
and is added to package. package becomes the home package of the new 
symbol, and the symbol is returned. The new symbol created is internal 
unless package is the keyword package in which case the symbol is external. 
The second value returned is as for find-symbol , except that nil indicates 
that a new symbol was created. read uses intern to convert symbol names 
into the symbols themselves.


■intersection
[Type       ]: Function
[Arguments  ]: intersection LIST1 LIST2 &rest REST &key :test :test-not :key
[Package    ]: lisp
[Seealso    ]: nintersection
[File       ]: list.l
[Section    ]: リスト
[Description]: 
LIST1 と LIST2 の両方に含まれる要素のリストを作って返します。
nintersection と違い元のリストは変更されません。

使用例:
  (intersection '(1 3 5 7 9) '(2 3 5 7 11))
  => (7 5 3)


■isqrt
[Type       ]: Function
[Arguments  ]: isqrt INTEGER
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
整数の平方根を整数で返します。

 (isqrt INTEGER) == (floor (sqrt INTEGER))

使用例：
  ;;; 143と144のisqrtを計算する。
  (isqrt 143)
  => 11
  (isqrt 144)
  => 12


■jump-to-register
[Type       ]: Function
[Arguments  ]: jump-to-register R
[Package    ]: editor
[Seealso    ]: point-to-register
[File       ]: register.l
[Section    ]: ポジション
[Description]: 
レジスタ R に格納されたマーカーの位置へジャンプします。
R にマーカーが入っていないとエラーになります。


■just-one-space
[Type       ]: Function
[Arguments  ]: just-one-space
[Package    ]: editor
[Seealso    ]: delete-horizontal-spaces
[File       ]: cmds.l
[Section    ]: テキスト
[Description]: 
カーソル位置の前後にある半角スペースとタブを削除した後、半角スペース
をひとつだけ挿入します。[ESC /]


■kana-char-p
[Type       ]: Function
[Arguments  ]: kana-char-p CHAR
[Package    ]: editor
[Seealso    ]: kanji-char-p
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
文字が半角カナ文字かを返します。

  t    半角カナ文字である。
  nil  半角カナ文字でない。

カナ文字は以下の範囲です。
  Code          Char
  ----          ----
  0xa1 .. 0xb0  #\｡ .. #\ｰ
  0xb1 .. 0xdd  #\ｱ .. #\ﾝ
  0xde          #\ﾞ
  0xdf          #\ﾟ


■kanji-char-p
[Type       ]: Function
[Arguments  ]: kanji-char-p CHAR
[Package    ]: editor
[Seealso    ]: kana-char-p
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
文字CHARが漢字かを返します。
（詳細不明）


■kept-undo-information
[Type       ]: BufferLocal
[Package    ]: editor
[Seealso    ]: undo , undo-boundary , clear-undo-boundary
[Section    ]: バッファ
[Description]: 
undo 可能回数を指定する変数です。

  <integer> : 指定回数分の undo 情報を保持します。
  上記以外  : undo 情報を保持しません。(undo できません。)

使用例：
  ;;; 現在開いているファイルではundoできないようにします。
  (make-local-variable 'kept-undo-information)
  => t
  (setq kept-undo-information nil)
  => nil


■keymapp
[Type       ]: Function
[Arguments  ]: keymapp OBJECT
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
指定されたOBJECTがキーマップかを返します。

  non-nil   OBJECTはキーマップ
  nil       OBJECTはキーマップではない


■keywordp
[Type       ]: Function
[Arguments  ]: keywordp OBJECT
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
与えられたオブジェクト OBJECT がキーワードか否かを返します。 OBJECT がシ
ンボルであり、かつ keyword パッケージに所属するときに t を返しているよう
です。

  (symbol-package 'a)
  =>#<package: user>
  (symbol-package :a)
  =>#<package: keyword>
  
  (symbolp 'a)
  =>t
  (keywordp 'a)
  =>nil
  
  (symbolp :a)
  =>t
  (keywordp :a)
  =>t


■kill-all-buffers
[Type       ]: Function
[Arguments  ]: kill-all-buffers &optional NOT-VERBOSE
[Package    ]: editor
[File       ]: buffer.l
[Section    ]: バッファ
[Description]: 
全バッファをkill-bufferします。
NOT-VERBOSEで保存するか否かを指定できます。

  NOT-VERBOSE :
        t       何も確認せずに保存しようとします。
        nil     変更があるバッファは確認のダイアログ表示されます。


■kill-all-local-variables
[Type       ]: Function
[Arguments  ]: kill-all-local-variables
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
全てのローカル変数が現在のバッファで独自の値を持てないようにします。
setq-defaultされていなかったローカル変数は参照できなくなります。

使用例：
  ;;; defvar-localした変数の値を設定してからkillしてみる。
  (defvar-local abc 123)        => abc
  (setq abc 456)                => 456
  abc                           => 456
  (kill-all-local-variables)    => t
  abc                           => 123


■kill-buffer
[Type       ]: Function
[Arguments  ]: kill-buffer BUFFER
[Package    ]: editor
[Seealso    ]: delete-buffer
[File       ]: buffer.l
[Section    ]: バッファ
[Description]: 
バッファを削除します。ただし、kill-bufferはバッファが変更されていると削
除していいかどうか聞いてきます。マクロ中で使う際には、delete-bufferを使
ったほうがいいでしょう。(ユーザに聞かずにいきなり削除します）

また、*query-kill-buffer-hook*にフック関数を設定すると、独自の用件でバッ
ファの破棄を確認できます。

使用例：
  ;;; 現在のバッファを削除する。
  (kill-buffer (selected-buffer))
  => t


■kill-line
[Type       ]: Function
[Arguments  ]: kill-line &optional LINES
[Package    ]: editor
[Seealso    ]: *kill-ring* , kill-region
[File       ]: cmds.l
[Section    ]: リージョン
[Description]: 
行をkillします。 killした行は *kill-ring* へ追加されます。 [C-k]
連続して kill-line を実行することで、複数行を一括して
*kill-ring* へ追加することができます。

  LINES 
     nil  : ポイントが行末ならば、その位置の改行コードをkillします。
            ポイントが行末でなければ、その行の行末までkillします。
       0  : ポイントが行頭ならば、前行の行頭までkillします。
            ポイントが行頭でなければ、その行の行頭までkillします。
     その他の整数 : 指定された行数 kill します。


■kill-local-variable
[Type       ]: Function
[Arguments  ]: kill-local-variable SYMBOL
[Package    ]: editor
[Seealso    ]: kill-all-local-variables , make-local-variable , make-variable-buffer-local
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
SYMBOLが現在のバッファで独自の値を持てない様にします。
kill-local-variableを実行した後では、SYMBOLの値はグローバルなSYMBOLの値
になります。setq-defaultされていなかったローカル変数は参照できなくなります。

使用例：
  ;;; defvar-localした変数の値を設定してからkillしてみる。
  (defvar-local abc 123)        => abc
  (setq abc 456)                => 456
  abc                           => 456
  (kill-local-variable 'abc)    => t
  abc                           => 123


■kill-paragraph
[Type       ]: Function
[Arguments  ]: kill-paragraph &optional (ARG 1)
[Package    ]: editor
[Seealso    ]: kill-region , backward-kill-paragraph
[File       ]: paragrph.l
[Section    ]: リージョン
[Description]: 
現在のパラグラフの最後までkillします。


■kill-process
[Type       ]: Function
[Arguments  ]: kill-process PROCESS
[Package    ]: editor
[Seealso    ]: signal-process , make-process
[File       ]: builtin.l
[Section    ]: プロセス
[Description]: 
プロセスを強制的に終了させます。


■kill-rectangle
[Type       ]: Function
[Arguments  ]: kill-rectangle P1 P2
[Package    ]: editor
[Seealso    ]: delete-rectangle , kill-region , kill-rectangle-selection , *rectangle-kill-buffer*
[File       ]: rectangl.l
[Section    ]: リージョン
[Description]: 
P1とP2で指定される矩形領域をkillします。
killした矩形領域のyankには、yank-rectangleを使います。
通常の*kill-ring*とは別の領域に格納されているようです。


■kill-rectangle-selection
[Type       ]: Function
[Arguments  ]: kill-rectangle-selection
[Package    ]: editor
[Seealso    ]: copy-rectangle-selection , kill-rectangle , operate-on-rectangle-selection
[File       ]: select.l
[Section    ]: リージョン
[Description]: 
マウスで矩形選択されたセレクションの領域をkillします。
yankにはyank-rectangle-selectionを使いますが、yank-rectangleでも行けそうです。
killした内容は*kill-ring*ともクリップボードとも違う領域に格納されているようです。


■kill-rectangle-selection-to-clipboard
[Type       ]: Function
[Arguments  ]: kill-rectangle-selection-to-clipboard
[Package    ]: editor
[Seealso    ]: kill-rectangle-selection , copy-rectangle-selection-to-clipboard
[File       ]: select.l
[Section    ]: リージョン
[Description]: 
マウスで矩形選択されたセレクションの領域を削除した後、クリップボードにコ
ピーします。


■kill-region
[Type       ]: Function
[Arguments  ]: kill-region FROM TO
[Package    ]: editor
[Seealso    ]: copy-region-as-kill , kill-selection
[File       ]: region.l
[Section    ]: リージョン
[Description]: 
リージョンをkill ringに入れます。

--- kill ringのいい加減な説明 ---
kill-regionした文字列は、*kill-ring*の先頭に追加されます。*kill-ring*は
最大で*kill-ring-max*（標準で16）まで保持できます。最大を越えたら古いも
のから破棄されます。

        *kill-ring*
        ┌─────┐  ─┐
        │"defun"   ←─── kill-regionした内容
        ├──↓──┤    │
        │"length"  │    │
        ├──↓──┤    ├最大*kill-ring-max*個
        │"test"    │    │
        ├──↓──┤    │
        │...       │    │
        └─────┘  ─┘

普通はkill[C-k]してyank[C-y]したら、*kill-ring*の先頭のものしか貼り付け
られませんが、killした直後にyank-pop[M-y]を繰り返すと、*kill-ring*の要素
を順次貼り付けてくれます。


■kill-region-to-clipboard
[Type       ]: Function
[Arguments  ]: kill-region-to-clipboard FROM TO
[Package    ]: editor
[Seealso    ]: kill-rectangle-selection-to-clipboard , kill-region
[File       ]: region.l
[Section    ]: リージョン
[Description]: 
FROMとTOで指定される領域を削除したのち、クリップボードにコピーします。


■kill-selected-buffer
[Type       ]: Function
[Arguments  ]: kill-selected-buffer
[Package    ]: editor
[Seealso    ]: kill-buffer
[File       ]: buffer.l
[Section    ]: バッファ
[Description]: 
名前のとおりselected-bufferをkill-bufferします。

参考：
  ;;; buffer.l
  (defun kill-selected-buffer ()
    (interactive)
    (kill-buffer (selected-buffer)))


■kill-selection
[Type       ]: Function
[Arguments  ]: kill-selection
[Package    ]: editor
[Seealso    ]: yank-selection , copy-selection
[File       ]: select.l
[Section    ]: リージョン
[Description]: 
選択された領域を切り取り、*selection-ring*の先頭に追加します。
追加した内容はyank-selectionで貼り付けられます。
デフォルトでは'F7'に割り付けられています。


■kill-selection-to-clipboard
[Type       ]: Function
[Arguments  ]: kill-selection-to-clipboard
[Package    ]: editor
[Seealso    ]: kill-region-to-clipboard , kill-rectangle-selection-to-clipboard
[File       ]: select.l
[Section    ]: リージョン
[Description]: 
セレクションを削除し、クリップボードに転送します。[C-Delete]
矩形選択状態であれば、 kill-rectangle-selection-to-clipboard
を実行します。


■kill-subprocess
[Type       ]: Function
[Arguments  ]: kill-subprocess
[Package    ]: editor
[Seealso    ]: kill-process , make-process
[File       ]: process.l
[Section    ]: プロセス
[Description]: 
バッファに割り付けられているプロセスを停止させます。


■kill-word
[Type       ]: Function
[Arguments  ]: kill-word &optional (ARG 1)
[Package    ]: editor
[Seealso    ]: kill-region , forward-word
[File       ]: cmds.l
[Section    ]: リージョン
[Description]: 
カーソル位置から前方の単語の末尾までを切り取り、キルリングに追加します。
[ESC d]
カーソルが単語の途中にある場合は、カーソル位置からその単語の末尾までが、
対象となります。


■lambda
[Type       ]: Misc
[Arguments  ]: lambda LAMBDA-LIST [[{DECLARATION}* | DOCUMENTATION]] {FORM}*
[Package    ]: lisp
[File       ]: evalmacs.l
[Section    ]: 制御構造
[Description]: 
関数に名前を付ける必要がなく、手続きだけを記述したい場合にラムダ式
  を用いる。ラムダ式の二番目の引数はラムダリストと呼ばれ、関数の
  パラメータの名前を与える。lambda式のより完全な構文は以下である。

  (lambda ({var}*
           [&optional {var | (var [initform [svar]])}*]
           [&rest var]
           [&key {var | ({var | (keyword var)} [initform [svar]])}*]
           [&aux {var | (var [initform])}*])
     [[{declaration}* | documentation-string]]
     {form}*)
  
  引数がラムダ式によって表される関数に適用されると、form が評価
  されて最後の form の結果が返される。form は順に評価される。

  ((lambda (x y) (+ x y)) 10 20)        => 30
  
  ラムダリストの各要素は、パラメータ指定子や、記号＆（アンパサンド）
  で始まるラムダリストキーワードからなる。ラムダリストは５つの部分で
  構成される。
  
  ・必須パラメータの記述
      ラムダリストキーワードよりも前に現れる var を必須パラメータという。
  
  ・オプショナルパラメータの記述
      &optionalから次のラムダリストキーワードまでか、ラムダリストの
      終わりまで。関数呼び出し時に、オプショナルパラメータに対応する
      引数はあっても無くてもよい。引数が省略された場合、initform が
      あれば initform に初期化され、無ければ nil で初期化される。
      svar は引数が与えられたかどうかを示す。
  
    ((lambda (x &optional (y 0 given))
         (if given (+ x y) x))
      10 20)
    => 30
  
  ・レストパラメータの記述
      &restとそれに続く一つのパラメータ指定子。関数への引数のうち、
      必須パラメータとオプショナルパラメータに対応するもの以外
      からなるリストが束縛される。
  
    ((lambda (x &optional (y 1) (z 2) &rest args)
         (list x y z args))
      'a 'b 'c 'd 'e 'f)
    => (a b c (d e f))
  
  ・キーワードパラメタの記述
      &keyから次のラムダリストキーワードまでか、ラムダリストの
      終わりまで。関数が呼ばれたときに対応する keyword に対応する
      パラメータ指定子 var に値を束縛する。
  
    ((lambda (x &key ((:test f) #'eq))
         (if (funcall f x "word") 'True 'False))
     "word" :test #'equal)
    => True
  
    ((lambda (x &key (test #'eq))
         (if (funcall test x "word") 'True 'False))
      "word" :test #'eql)
    => False
  
  ・補助変数の記述
      ラムダリストに &aux が含まれるなら、この後の全ての指定は
      補助変数の指定子である。次に示す二つの例は同じ結果を与える。
      これらの使用については純粋にスタイルの問題である。
    
    ((lambda (x &aux (l (length x)))
         (list x l))
      '(a b c))
    => ((a b c) 3)
    
    ((lambda (x)
         (let ((l (length x))) (list x l)))
      '(a b c))
    => ((a b c) 3)


■lambda-parameters-limit
[Type       ]: Variable
[Package    ]: lisp
[Seealso    ]: call-arguments-limit
[Section    ]: 変数と定数
[Description]: 
lambdaに与えることのできる引数の個数の限界値

参照例： 
  lambda-parameters-limit
  => 536870911


■last
[Type       ]: Function
[Arguments  ]: last LIST &optional (N 1)
[Package    ]: lisp
[Seealso    ]: butlast
[File       ]: builtin.l
[Section    ]: リスト
[Description]: 
リストの末尾からN個分のリストを返します。

使用例：
  ;;; 末尾を取得してみる。
  (last '(a b c d))     => (d)
  (last '(a b c d) 2)   => (c d)
  (last '(a b c d) 5)   => (a b c d)


■lcm
[Type       ]: Function
[Arguments  ]: lcm INTEGER &rest MORE-INTEGERS
[Package    ]: lisp
[Seealso    ]: gcd
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
引数の最小公倍数を返します。

使用例：  
  (lcm 14 35)
  => 70
  (lcm 0 5)
  => 0
  (lcm 1 2 3 4 5 6)
  => 60


■ldiff
[Type       ]: Function
[Arguments  ]: ldiff LIST OBJECT
[Package    ]: lisp
[Seealso    ]: tailp
[File       ]: list.l
[Section    ]: リスト
[Description]: 
OBJECT が LIST の一部であるなら、LIST から OBJECT の部分を除いたリストを返します。

LIST の一部分であるかどうかの判定は eq で行います。
OBJECT が LIST の tailp であれば LIST の一部であるとみなされるとも言えます。

使用例:
  (setq x '(a b c d e))
  => (a b c d e)
  (setq y (cddr x))
  => (c d e)
  (ldiff x y)
  => (a b)
  ;; 見た目は同じでも x の一部分でないならダメ
  (ldiff x '(c d e))
  => (a b c d e)


■length
[Type       ]: Function
[Arguments  ]: length SEQUENCE
[Package    ]: lisp
[Seealso    ]: fill-pointer
[File       ]: builtin.l
[Section    ]: シーケンス
[Description]: 
sequence(文字列や、リスト、配列)の長さを求めます。
配列にfill-pointerがある場合は、そこまでの長さになります。

使用例：
  (length "abcd")               => 4
  (length (list 1 2 3))         => 3
  (length (make-array 7))       => 7
  (length (make-array 7 :fill-pointer 4))
                                => 4


■let
[Type       ]: Special Form
[Arguments  ]: let ({VAR|(VAR [VALUE])}*) {declaration}* {FORM}*
[Package    ]: lisp
[Seealso    ]: let*
[File       ]: builtin.l
[Section    ]: 変数と定数
[Description]: 
ローカルな変数を定義してフォームを評価します。

--- muleの説明 ---
この関数は、 binding-list に従い変数をバインドし、 forms 中の全てのフォ
ームを順に評価します。 let は (forms 中の)最後のフォームの値を返します。 

binding-list の各要素は、シンボル(この場合、そのシンボルは nil にバイン
ドされる)か、フォーム (symbol value-form) のリスト(この場合、let は value- 
form を評価した結果を symbol にバインドする) です。 

フォーム(の全て)を評価する前に let フォームを exit した場合、 (訳注：バ
インドされた)シンボルのローカルバインディングを取り去ります。 

value-form はシンボルのバインディングを行なう前に (全て)、現われた順に評
価されます(これにたよることができる??)。次の例において、Z は Y の前の値
(2)にバインドされ、新しい値にはバインドされません。 

  (setq Y 2)
  => 2
  (let (X
        (Y 1)
        (Z Y))
    (list X Y Z))
  => (nil 1 2)


■let*
[Type       ]: Special Form
[Arguments  ]: let* ({VAR|(VAR [VALUE])}*) {declaration}* {FORM}*
[Package    ]: lisp
[Seealso    ]: let
[File       ]: builtin.l
[Section    ]: 変数と定数
[Description]: 
letとよく似ています。letと異なり、VARの初期化に先に定義した他のVARを参照
することが可能です。

使用例：
  ;;; letとlet*の違い
  (setq Y 2)
  => 2
  (let (X (Y 1) (Z Y)) (list X Y Z))
  => (nil 1 2)
  (let* (X (Y 1) (Z Y)) (list X Y Z))
  => (nil 1 1)


■lisp-complete-symbol
[Type       ]: Function
[Arguments  ]: lisp-complete-symbol
[Package    ]: editor
[File       ]: lispmode.l
[Section    ]: シンボル
[Description]: 
Lisp のシンボル名を補完します。[ESC TAB]


■list
[Type       ]: Function
[Arguments  ]: list &rest ARGS
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: リスト
[Description]: 
この関数は、 ARGS を要素とするリストを作ります。結果として返されるリ
ストは(常に) nil でターミネート(訳注：終端)されています。 ARGS が与え
られない場合、 empty リストを返します。 

  (list 1 2 3 4 5)
  => (1 2 3 4 5)
  (list)
  => nil


■list-all-packages
[Type       ]: Function
[Arguments  ]: list-all-packages
[Package    ]: lisp
[Seealso    ]: パッケージ
[File       ]: builtin.l
[Section    ]: パッケージ
[Description]: 
xyzzy内に存在するパッケージ一覧をリストで返します。

使用例：
  (list-all-packages)
  =>  (#<package: win-user> #<package: winapi> #<package: 
     foreign>  #<package: lisp> #<package: system> #<package: 
     keyword> #<package: user> #<package: editor>)


■list-archive
[Type       ]: Function
[Arguments  ]: list-archive ARCHIVE-FILE &optional FILE-NAME-ONLY
[Package    ]: editor
[Seealso    ]: create-archive
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
アーカイブのファイル名一覧を取り出します。

  ARCHIVE-FILE   : 一覧を取得するアーカイブを指定します。
  FILE-NAME-ONLY : 戻り値の形式を指定します。
        t   ファイル名(ディレクトリ名)のみを返します。
        nil ファイル名(ディレクトリ名)、属性、サイズ、タイムスタンプを
            返します。

使用例：
  (list-archive "foo.lzh")


■list-function
[Type       ]: Function
[Arguments  ]: list-function &rest ARGS
[Package    ]: editor
[File       ]: listfn.l
[Section    ]: 関数
[Description]: 
バッファ中の関数の一覧をダイアログで表示します。選択することで定
義位置にジャンプすることが可能です。バッファ中の関数の一覧は、バ
ッファローカル変数build-summary-functionから取得しています。


■list-length
[Type       ]: Function
[Arguments  ]: list-length LIST
[Package    ]: lisp
[Seealso    ]: length
[File       ]: builtin.l
[Section    ]: リスト
[Description]: 
リストの長さを返します。
リストが循環している場合、length は結果を返さないかもしれませんが、
list-length は nil を返します。

使用例：
  ;;; リストの長さを比べてみる。
  (list-length '())             => 0 
  (list-length '(a b c d))      => 4 
  (list-length '(a (b c) d))    => 3 
  (let ((a '(x)))
    (setf (cdr a) a)
    (list-length a))            => nil


■list-server-resources
[Type       ]: Function
[Arguments  ]: list-server-resources SERVER-NAME &optional COMMENT-P
[Package    ]: editor
[Seealso    ]: list-servers
[File       ]: builtin.l
[Section    ]: その他
[Description]: 
指定されたコンピュータの共有資源の一覧を取得します。
同時に資源のコメントも取得可能です。

使用例：
  (list-server-resources "SAMURAI")
  => ("SPOOL" "E" "D" "A")
  (list-server-resources "SAMURAI" t)
  => (("SPOOL" "") ("E" "CD-ROM Drive") ("D" "Backup Storage") ("A" "FD Drive"))


■list-servers
[Type       ]: Function
[Arguments  ]: list-servers &optional COMMENT-P
[Package    ]: editor
[Seealso    ]: list-server-resources
[File       ]: builtin.l
[Section    ]: その他
[Description]: 
ネットワークコンピュータの一覧が取得できます。
同時にコンピュータに設定されているコメントも取得可能です。

使用例：
  (list-servers)
  => ("SAMURAI" "ROUNIN")
  (list-servers t)
  => (("SAMURAI" "Main Machine") ("ROUNIN" "Sub Machine"))


■list-text-attributes
[Type       ]: Function
[Arguments  ]: list-text-attributes &optional START END
[Package    ]: editor
[Seealso    ]: find-text-attribute , set-text-attribute
[File       ]: builtin.l
[Section    ]: テキスト
[Description]: 
バッファ中のテキスト属性をすべて探し、リストにして返します。
範囲を指定した場合、その範囲中に一部でも含まれるものをリストにします。

  START : 検索範囲の開始点
  END   : 検索範囲の終了点


■list-tool-bars
[Type       ]: Function
[Arguments  ]: list-tool-bars
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: メニュー
[Description]: 
ツールバーの状態を取得します。状態は以下の形式で返されます。

形式：
  (((左側のツールバー1 横位置1 縦位置1 横幅1)
    (左側のツールバー2 横位置2 縦位置2 横幅2)
    (左側のツールバー3 横位置3 縦位置3 横幅3) ... )
   ((上側のツールバー1 横位置1 縦位置1 横幅1) ... )
   ((右側のツールバー1 横位置1 縦位置1 横幅1) ... )
   ((下側のツールバー1 横位置1 縦位置1 横幅1) ... )
   (非表示のツールバー1 非表示のツールバー2 ... ))

タブバーの場合だけ横幅に数字が返されます。ツールバーの場合には、必ずnil
が返されます。


■listen
[Type       ]: Function
[Arguments  ]: listen &optional INPUT-STREAM
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 入出力
[Description]: 
指定された入力ストリームに何か入力がある状態ならばt、ないならばnilを返します。


■listp
[Type       ]: Function
[Arguments  ]: listp OBJECT
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
OBJECTがconsか空リスト()ならt、それ以外ならnilを返します。

  (listp x) == (typep x 'list) == (typep x '(or cons null))


■load-file
[Type       ]: Function
[Arguments  ]: load-file FILENAME
[Package    ]: lisp
[Seealso    ]: load-library , load
[File       ]: misc.l
[Section    ]: 評価
[Description]: 
ファイルを対話的に読み込みます。
load-library と異なり、*load-path* にないファイルも読み込めます。


■load-keyword-file
[Type       ]: Function
[Arguments  ]: load-keyword-file NAME &optional ICASE TABLE CONDITION
[Package    ]: editor
[File       ]: kwd.l
[Section    ]: その他
[Description]: 
キーワードファイルをロードします。

使用例：
  (and *xmldoc-keyword-file*
       (null *xmldoc-keyword-hash-table*)
       (setq *xmldoc-keyword-hash-table*
             (load-keyword-file *xmldoc-keyword-file* t)))
  (when *xmldoc-keyword-hash-table*
    (make-local-variable 'keyword-hash-table)
    (setq keyword-hash-table *xmldoc-keyword-hash-table*))


■load-library
[Type       ]: Function
[Arguments  ]: load-library FILENAME &rest REST
[Package    ]: lisp
[Seealso    ]: si:*load-library
[File       ]: misc.l
[Section    ]: 評価
[Description]: 
ライブラリを対話的に読み込みます。
requireと異なり、一度読んでいてももう一度読み込みます。

内部的には、si:*load-libraryをinteractiveで宣言したものです。

| また、si:*load-library中で失敗したら、メッセージ等を出力して、処理を続けると
| いうのは可能でしょうか？

  (handler-case
      (si:*load-library "foo")
    (error (c) (si:*print-condition c)))
      (si:*load-library "bar")


■local-unset-key
[Type       ]: Function
[Arguments  ]: local-unset-key KEY
[Package    ]: editor
[File       ]: keymap.l
[Section    ]: キーマップ
[Description]: 
ローカルキーマップのキー割り当てを解除します。

使用例：
  ;;; lisp-modeのTABのローカルキーマップを外す。
  (lookup-key-command #\TAB)
  => lisp-indent-line
  (local-unset-key #\TAB)
  => t
  (lookup-key-command #\TAB)
  => self-insert-command


■local-variable-p
[Type       ]: Function
[Arguments  ]: local-variable-p SYMBOL &optional BUFFER
[Package    ]: editor
[Seealso    ]: make-local-variable
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
指定されたシンボルがバッファローカル変数かどうかを判定します。

使用例：
  ;;; buffer: foo
  (local-variable-p 'abc)
  => nil
  (make-local-variable 'abc)
  => t
  (local-variable-p 'abc)
  => t

  ;;; buffer: bar
  (local-variable-p 'abc)
  => nil


■lock-file
[Type       ]: BufferLocal
[Package    ]: editor
[Section    ]: バッファ
[Description]: 
ロックファイルを作るかどうかを指定する変数です。

  t   : ロックファイルを作る。
  nil : ロックファイルを作らない。

使用例：
  ;;; 現在開いているファイルではロックファイルを作らないようにする。
  (make-local-variable 'lock-file)
  => t
  (setq lock-file nil)
  => nil


■log
[Type       ]: Function
[Arguments  ]: log NUMBER &optional BASE
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
BASE を底とする NUMBER の対数を返します。

使用例：
  (log 2.718282)
  => 1.0
  (log 7.389056)
  => 2.0


■logand
[Type       ]: Function
[Arguments  ]: logand &rest ARGS
[Package    ]: lisp
[Seealso    ]: logior
[File       ]: number.l
[Section    ]: 数値
[Description]: 
ビット毎のANDを取ります。C言語でいう&です。

使用例：
  ;;; 2進数で#b11110000と#b00110011のビットの積を取る。
  (format nil "~8,'0b" (logand #b11110000 #b00110011))
  => "00110000"


■logior
[Type       ]: Function
[Arguments  ]: logior &rest ARGS
[Package    ]: lisp
[Seealso    ]: logand
[File       ]: number.l
[Section    ]: 数値
[Description]: 
ビット毎のORを取ります。C言語でいう|です。

使用例：
  ;;; 2進数で#b00110000と#b00000011のビットの和を取る。
  (format nil "~8,'0b" (logior #b00110000 #b00000011))
  => "00110011"


■long-float-p
[Type       ]: Function
[Arguments  ]: long-float-p OBJECT
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
OBJECTがlong-floatならt、それ以外ならnilを返します。


■long-operation
[Type       ]: Macro
[Arguments  ]: long-operation &rest BODY
[Package    ]: editor
[File       ]: misc.l
[Section    ]: その他
[Description]: 
カーソルを砂時計にします。明らかに処理時間が長いことが見込まれる場合にし
ようすると良いと思います。

使用例：
  (long-operation
     (message "start")
     ;; 何か長い処理
     (message "end"))


■looking-at
[Type       ]: Function
[Arguments  ]: looking-at REGEXP &optional CASE-FOLD
[Package    ]: editor
[Seealso    ]: looking-for , scan-buffer , string-match , 正規表現の表記
[File       ]: builtin.l
[Section    ]: 検索・正規表現
[Description]: 
現在のカーソル位置で前方向に正規表現でマッチしたらt、しなかったらnilを返します。

使用例：
  ;;; 行頭が(とマッチするか?
  (defun rrr ()
    (interactive)
    (if (looking-at "^(")
      (message "ok") (message "bad")))

  ;;; 空白やタブや全角スペースがあれば削除する
  (if (looking-at "[ \t　]*")
      (delete-region (match-beginning 0) (match-end 0)))


■looking-back
[Type       ]: Function
[Arguments  ]: looking-back STRING &optional CASE-FOLD
[Package    ]: editor
[Seealso    ]: looking-for
[File       ]: builtin.l
[Section    ]: 検索・正規表現
[Description]: 
現在のカーソル位置から後方向にマッチしたらt、しなかったらnilを返します。

使用例：
  (looking-back "::")
  (looking-back "\\")
  (looking-back "#'")


■looking-for
[Type       ]: Function
[Arguments  ]: looking-for STRING &optional CASE-FOLD
[Package    ]: editor
[Seealso    ]: looking-at , looking-back
[File       ]: builtin.l
[Section    ]: 検索・正規表現
[Description]: 
現在のカーソル位置から前方向にマッチしたらt、しなかったらnilを返します。
後方向にマッチしたければlooking-backを、正規表現でマッチしたければ
looking-atを使用します。

使用例：
  (looking-for "^")
  (looking-for "define")
  (looking-for "::")


■lookup-dictionary
[Type       ]: Function
[Arguments  ]: lookup-dictionary DIRECTORY DIC-FILE INDEX-FILE WORD
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: その他
[Description]: 
辞書引き機能
（詳細不明）

使用例：
  (lookup-dictionary *edict-dictionary-path* "xyzzydic" "xyzzye2j" s)


■loop
[Type       ]: Macro
[Arguments  ]: loop &body BODY
[Package    ]: lisp
[File       ]: evalmacs.l
[Section    ]: 制御構造
[Description]: 
無限ループします。
脱出するには以下の様にreturnを使います。

 (loop
   処理
   (if 条件 (return 値))
   処理)

使用例：
  ;;; 「はい」と答えるまで繰り返し
  (loop (if (yes-or-no-p "quit?") (return 123)))
  => 123


■lower-case-p
[Type       ]: Function
[Arguments  ]: lower-case-p CHAR
[Package    ]: lisp
[Seealso    ]: upper-case-p , both-case-p
[File       ]: builtin.l
[Section    ]: 文字
[Description]: 
CHAR が小文字なら t 、そうでなければ nil を返します。

使用例：
  (lower-case-p #\a)
  => t
  (lower-case-p #\A)
  => nil
  (lower-case-p #\RET)
  => nil


■machine-name
[Type       ]: Function
[Arguments  ]: machine-name
[Package    ]: editor
[Seealso    ]: user-name , si:getenv
[File       ]: builtin.l
[Section    ]: システム
[Description]: 
マシン名を返します。

使用例：
  ;;; マシン名を返します。
  (machine-name)
  => "WS4849"

  ;;; PCによって、den8やdiffのインストールディレクトリが違っているので、
  ;;; 切り替えたりできます。
  (defun my-directory-setup ()
    (let ((x (machine-name)))
      (setq *diff-command-name*
            (cond ((string= x "TOMOYO") "c:/Cygnus/diff")
                   (t "c:/z/tools/diff")))
      (setq *den8-directory*
            (cond ((string= x "KANA") "D:/1gou-ki/den8_321")
                   (t "c:/z/den8_321")))))


■macro-function
[Type       ]: Function
[Arguments  ]: macro-function SYMBOL
[Package    ]: lisp
[Seealso    ]: fboundp , boundp
[File       ]: builtin.l
[Section    ]: マクロ
[Description]: 
SYMBOLがマクロか否かを返します。マクロの場合にはその内容を返します。
使用例：
  (macro-function 'car)
  =>nil

  (macro-function 'when)
  =>(macro (lisp::test &body lisp::body)
         (block when (list 'if lisp::test (cons 'progn lisp::body))))


■macroexpand
[Type       ]: Function
[Arguments  ]: macroexpand FORM &optional ENV
[Package    ]: lisp
[Seealso    ]: defmacro
[File       ]: builtin.l
[Section    ]: マクロ
[Description]: 
フォームがどのようにマクロ展開されるかを返します。
マクロの展開され方を確認するのに役立ちます。

使用例：
  ;;; マクロM2を定義してどのように展開
  (defmacro M2 (&rest args)
      `(progn
         (m-setup) ,@args (m-cleanup)))
  (macroexpand '(M2 (insert "Begin") (insert "End")))
  => (progn (m-setup) (insert "Begin") (insert "End") (m-cleanup))


■macroexpand-1
[Type       ]: Function
[Arguments  ]: macroexpand-1 FORM &optional ENV
[Package    ]: lisp
[Seealso    ]: macroexpand
[File       ]: builtin.l
[Section    ]: マクロ
[Description]: 
macroexpandに似ていますが、展開されるレベルが1レベルで終わるところが違います。
自作のマクロなどがどう展開されるのか調べるときに便利です。

使用例:
  (defmacro my-macro ()
    `(dotimes (x 10)))
  というマクロがあるとき
  
  (macroexpand '(my-macro))
  => (block nil (let* ((x 0) (#1=#:count 10)) (lisp::*loop (if (>= x #1#) (return (progn 'nil))) (tagbody) (setq x (+ x 1)))))
  とmy-macro展開後のdotimesまで(実際はdotimesを展開後さらにdo*を展開)が
  再帰的に展開されますが、

  (macroexpand-1 '(my-macro))
  => (dotimes (x 10))
  と、my-macroだけが展開されます。


■macrolet
[Type       ]: Special Form
[Arguments  ]: macrolet ({(NAME LAMBDA-LIST {declaration}* [doc-string] {FORM}*)}*) {FORM}*
[Package    ]: lisp
[Seealso    ]: defmacro , flet
[File       ]: builtin.l
[Section    ]: マクロ
[Description]: 
defmacroの局所版です。


■make-array
[Type       ]: Function
[Arguments  ]: make-array DIMENSIONS &rest REST &key (:element-type t) (:initial-element () ies-p) (:initial-contents () ics-p) :fill-pointer :adjustable :displaced-to (:displaced-index-offset 0)
[Package    ]: lisp
[Seealso    ]: aref , setf , make-vector , length , array-dimensions
[File       ]: array.l
[Section    ]: 配列
[Description]: 
DIMENSIONS で示される大きさ・次元の配列をつくり、それを値として返します。
もし、DIMENSIONS が nil なら、ゼロ次元配列がつくられます。
たとえば、変数 hoge を4次元の配列(＝4次元のベクトル)にするためには、

  (setf hoge (make-array 4))
  => #(nil nil nil nil)

変数 foo を2x4次元の配列とするためには、

  (setf foo (make-array '(2 4)))
  => #2A((nil nil nil nil) (nil nil nil nil))

とします。
:element-type は、新しい配列の各要素の型を規定します。
:initial-element が与えられている場合、新しい配列の全要素はすべて
:initial-element に初期化されます。これに対して、:initial-contents が与えら
れている場合、新しい配列の各要素が :initial-contents で初期化されます。
たとえば、

  (make-array '(2 4) :initial-element 10); 2x4の配列をつくる。:initial-elementで初期化
  => #2A((10 10 10 10) (10 10 10 10))
  (make-array '(2 4) 
  :initial-contents '((0 1 2 3) (3 2 1 0))); 2x4の配列をつくる。:initial-contentsで初期化
  => #2A((0 1 2 3) (3 2 1 0))

なお、配列の要素にアクセスするためには、 aref が使われます。


■make-backup-files
[Type       ]: BufferLocal
[Package    ]: editor
[Section    ]: バッファ
[Description]: 
バックアップファイルを作るかどうかを指定する変数です。

  t   : バックアップファイルを作る
  nil : バックアップファイルを作らない

使用例：
  ;;; 現在開いているファイルをバックアップとらないようにする。
  (make-local-variable 'make-backup-files)
  => t
  (setq make-backup-files nil)
  => nil


■make-broadcast-stream
[Type       ]: Function
[Arguments  ]: make-broadcast-stream &rest STREAMS
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 入出力
[Description]: 
ブロードキャスト用の出力ストリームを作成します。
STREAMS に指定した複数のストリームに対して同時に出力することができます。

参考：
                        OUTPUT━━┓
                    ┌→┃STREAM1 ┠→
                    │  ┗━━━━┛
        BROADCAST ┓│  OUTPUT━━┓
    ─→┃STREAM  ┠┼→┃STREAM2 ┠→
        ┗━━━━┛│  ┗━━━━┛
                    │  OUTPUT━━┓
                    └→┃STREAM3 ┠→
                        ┗━━━━┛
使用例：
  ;;; fooとbarという出力ストリームを作ってから、
  ;;; hogeというブロードキャスト用ストリームを作り一括して出力
  (with-open-stream (foo (open "foo.txt" :direction :output))
    (with-open-stream (bar (open "bar.txt" :direction :output))
      (with-open-stream (hoge (make-broadcast-stream foo bar))
        (princ "abc" hoge))))
  => "abc"


■make-buffer-stream
[Type       ]: Function
[Arguments  ]: make-buffer-stream BUFFER &optional POINT EOB
[Package    ]: editor
[Seealso    ]: buffer-stream-buffer , buffer-stream-point , buffer-stream-set-point , xyzzyで提供されているストリームの種類
[File       ]: builtin.l
[Section    ]: 入出力
[Description]: 
バッファ上にbuffer-streamを作成します。

  BUFFER : buffer-streamを作成するバッファを指定します。
  POINT  : 入出力を開始するポイントを指定します。
        nil     バッファの先頭が開始位置
        nil以外 指定されたポイントが開始位置
  EOB    : 終端のポイントを指定します。
        nil     バッファの最後が終端
        nil以外 指定されたポイントが終端


■make-concatenated-stream
[Type       ]: Function
[Arguments  ]: make-concatenated-stream &rest STREAMS
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 入出力
[Description]: 
STREAMS に指定した複数の入力ストリームをくっつけて、順番に読み出すための
一つの入力ストリームを作ります。

参考：
                        INPUT ━━┓    
                      ┌┨STREAM1 ┃←─
                      │┗━━━━┛    
        CONCAT━━┓  │INPUT ━━┓    
    ←─┨STREAM  ┃←┼┨STREAM2 ┃←─
        ┗━━━━┛  │┗━━━━┛    
                      │INPUT ━━┓    
                      └┨STREAM3 ┃←─
                        ┗━━━━┛    

使用例：
  ;;; 文字列の入力ストリームを二本作った後、一本に連接してみる。
  (with-open-stream (foo (make-string-input-stream "foo"))
    (with-open-stream (bar (make-string-input-stream "bar"))
      (with-open-stream (hoge (make-concatenated-stream foo bar))
        (while (setq in (read-char hoge nil))
          (write-char in)))))


■make-echo-stream
[Type       ]: Function
[Arguments  ]: make-echo-stream INPUT-STREAM OUTPUT-STREAM
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 入出力
[Description]: 
INPUT-STREAM からの入力を OUTPUT-STREAM に出力するストリームを作成します。
make-two-way-stream と異なり、 INPUT-STREAM から入力された内容は、全て
OUTPUT-STREAM にエコーされます。

参考：

     ECHO STREAM━┓    INPUT ━━┓
    ←─┨←───┨←─┨STREAM  ┃←─
        ┃    ┌─┨    ┗━━━━┛
        ┃    └→┃    OUTPUT━━┓
    ─→┠───→┠─→┃STREAM  ┠─→
        ┗━━━━┛    ┗━━━━┛


■make-hash-table
[Type       ]: Function
[Arguments  ]: make-hash-table &key :test :size :rehash-size :rehash-threshold
[Package    ]: lisp
[Seealso    ]: gethash
[File       ]: builtin.l
[Section    ]: ハッシュ
[Description]: 
ハッシュテーブルを作成して返します。


■make-keymap
[Type       ]: Function
[Arguments  ]: make-keymap
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: キーマップ
[Description]: 
空のキーマップを作成します。


■make-list
[Type       ]: Function
[Arguments  ]: make-list SIZE &key :initial-element
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: リスト
[Description]: 
指定された長さのリストを作成して返します。

  SIZE             : リストの長さ
  :initial-element : リストの要素

使用例：
  (make-list 3)
  => (nil nil nil)
  (make-list 0)
  => nil
  (make-list 2 :initial-element 'x)
  => (x x)


■make-list-from-keyword-table
[Type       ]: Function
[Arguments  ]: make-list-from-keyword-table HASH
[Package    ]: editor
[File       ]: kwd.l
[Section    ]: 変数と定数
[Description]: 
キーワードハッシュテーブルから補完用のリストを作成します。

  HASH：キーワードハッシュテーブル(*xxxx-keyword-hash-table*)を指定

使用例：
  ;;; CSSのキーワードハッシュテーブルを元に
  ;;; 補完用リストを作成して、do-completionする。
  (defun css-completion ()
    (interactive)
    (or *css-completion-list*
        (setq *css-completion-list* (make-list-from-keyword-table *css-keyword-hash-table*))
        (return-from css-completion nil))
    (let ((opoint (point)))
      (when (skip-syntax-spec-backward "w_")
        (let ((from (point)))
          (goto-char opoint)
          (do-completion from opoint :list-ignore-case *css-completion-list*)))))


■make-local-variable
[Type       ]: Function
[Arguments  ]: make-local-variable SYMBOL
[Package    ]: editor
[Seealso    ]: make-variable-buffer-local , defvar-local , local-variable-p , kill-local-variable , kill-all-local-variables , buffer-local-value , buffer-local-variables
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
SYMBOLを現在のバッファで独自の値を持てるようにローカル変数にします。
make-variable-buffer-localとは異なり、現在のバッファだけです。

使用例：
  ;;; 現在のバッファは自動保存しないようにする。
  (make-local-variable 'auto-save)
  => t  
  (setq auto-save nil)
  => nil


■make-marker
[Type       ]: Function
[Arguments  ]: make-marker &optional BUFFER
[Package    ]: editor
[Seealso    ]: set-marker
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
空のマーカーを作って返します。

  BUFFER : マーカーを作るバッファを指定します。


■make-package
[Type       ]: Function
[Arguments  ]: make-package PACKAGE-NAME &key :nicknames :use :internal-size :external-size
[Package    ]: lisp
[Seealso    ]: defpackage , delete-package , in-package
[File       ]: builtin.l
[Section    ]: パッケージ
[Description]: 
パッケージを作成します。defpackageとの違いは？（詳細不明）

使用例：
  (make-package name :external-size 0)


■make-process
[Type       ]: Function
[Arguments  ]: make-process COMMAND-LINE &key :environ :output :exec-directory :incode :outcode :eol-code
[Package    ]: editor
[Seealso    ]: call-process , execute-subprocess , buffer-process , mode-line-format , process-send-string , set-process-sentinel , set-process-filter
[File       ]: builtin.l
[Section    ]: プロセス
[Description]: 
プロセスを起動します。

  COMMAND-LINE    : 実行するコマンドをオプション付で指定します。
  :environ        : 設定する環境変数を連想リスト形式で渡します。
                    (("HOME" . "C:/applications/xyzzy/")
                     ("TOPDIR" . "C:/spool/"))
  :output         : プロセスの標準出力を出力するバッファを指定します。
  :exec-directory : 実行するディレクトリを指定します。
  :incode         : プロセスの入力の文字コードを指定します。
  :outcode        : プロセスの出力の文字コードを指定します。
  :eol-code       : 改行コードを指定します。

プロセスへの入力はprocess-send-stringを使用します。
プロセスはバッファに関連付けられ、プロセスの出力がバッファにそのまま出力されます。
バッファに関連付けられたプロセスの状態は，モードライン上に :Run や :Exit と
表示されます。また、環境変数や出力先等を変更できます。

戻り値は，プロセスの関連付けられたバッファです。

参考:
  [xyzzy:02210]山本真二さん
  call-process または別の組み込み関数で、標準入力、標準出力、標準エラー
  出力を直接バッファに繋ぐようにした方が早くてかっこいいと思うのですが、
  難しいですか？

  (make-process *eshell* :output (selected-buffer))
  (process-send-string (buffer-process (selected-buffer))
                       (concatenate 'string cmd *shell-ret*))


■make-random-state
[Type       ]: Function
[Arguments  ]: make-random-state &optional STATE
[Package    ]: lisp
[Seealso    ]: *random-state* , random-state-p , random
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
乱数の状態を初期化します

  STATE:
    nil          初期化はせずに現在の*random-state*のコピーを返します。
    t            時刻に基づいて新しい状態を作ります。
    random-state この関数(make-random-state)の戻り値を渡すとコピーが返ります。

使用例:
 ;;;乱数列の再現
 (let ((rs1 (make-random-state nil))
       (rs2 (make-random-state nil)))   ;;現状の乱数状態のコピーを二つ作る
   (dotimes (i 10)
     (format t "~A " (random 100 rs1))) ;;一つ目
   (terpri)
   (dotimes (i 10)
     (format t "~A " (random 100 rs1))) ;;一つ目やりすぎて
   (terpri)
   (dotimes (i 10)
     (format t "~A " (random 100 rs2))) ;;二つ目を少し見てみる。
   (terpri))
 =>3 41 81 70 73 66 32 72 2 55   ;ここと
   21 97 83 14 86 26 99 69 18 46 
   3 41 81 70 73 66 32 72 2 55   ;ここが同じになる


■make-sequence
[Type       ]: Function
[Arguments  ]: make-sequence TYPE SIZE &key :initial-element
[Package    ]: lisp
[File       ]: sequence.l
[Section    ]: シーケンス
[Description]: 
要素のタイプが TYPE でサイズが SIZE なシーケンスを作成して返します。
:initial-element が与えられた場合はそれぞれの項目はそれで初期化されます。
  
TYPE の値と返されるシーケンスは以下の通りです。
  'list          ──→ リスト
  'vector        ─┬→ ベクトル
  'simple-vector ─┘
  'string        ─┬→ 文字列
  'simple-string ─┘

TYPE にはリストを与えることもでき、その場合は最初の要素でシーケンスが決まります。
  '(list ...)         ──→ リスト
  '(array ...)        ─┬→ 配列
  '(simple-array ...) ─┘
最初の要素が list の場合、二番目以降の引数は無視されます。
最初の要素が array または simple-array の場合は三番目の要素まで意味を持ちます。
二番目の要素は値によって以下のように変化します。リストの場合はその最初の要素で判断されます。
  t                  ─┬→ 配列
  nil                ─┘
  character          ─┬→ 文字列
  base-character     ─┤
  standard-char      ─┤
  extended-character ─┘
三番目の要素は 1 または (*) または (SIZE に等しい数値) でなければなりませんが、
どれを選んでも動作に違いはないようです。
  
使用例：
  ;;; #\a が 8 文字の文字列を作ってみる
  (make-sequence 'string 8 :initial-element #\a)
  => "aaaaaaaa"
  (make-sequence 'list 4 :initial-element "abc")
  => (#1="abc" #1# #1# #1#)
  (make-sequence 'vector 4 :initial-element 'a)
  => #(a a a a)
  ;;; あえて TYPE に array を与えてみる
  (make-sequence '(array t (*)) 4 :initial-element 'a)
  => #(a a a a)
  (make-sequence '(array character 1) 8 :initial-element #\a)
  => "aaaaaaaa"


■make-sparse-keymap
[Type       ]: Function
[Arguments  ]: make-sparse-keymap
[Package    ]: editor
[Seealso    ]: make-keymap
[File       ]: builtin.l
[Section    ]: キーマップ
[Description]: 
空のキーマップを作成します。
キー定義の数が少ない時に使うとメモリを節約できます。

使用例：
  ;;; lispmode.lより
  (unless *lisp-mode-map*
    (setq *lisp-mode-map* (make-sparse-keymap))
    (define-key *lisp-mode-map* #\C-M-x 'eval-defun)
    ...
    (define-key *lisp-mode-map* #\) 'lisp-electric-close))


■make-string-input-stream
[Type       ]: Function
[Arguments  ]: make-string-input-stream STRING &optional START END
[Package    ]: lisp
[Seealso    ]: with-input-from-string
[File       ]: builtin.l
[Section    ]: 入出力
[Description]: 
文字列からの入力用ストリームを作成します。
以後、このストリームからは文字列の内容を順番に取得可能です。

  STRING : 対象の文字列を指定します。
  START  : 入力ストリームとする開始位置です。
  END    : 入力ストリームとする終了位置です。

複数の入力ストリームを使用するのでなければ、with-input-from-string を使
用する方が簡単です。

使用例：
  ;;; 文字列の入力用ストリームからひとつ読み出してみる。
  (with-open-stream (foo (make-string-input-stream "abc def"))
    (read foo))
  => abc  

  ;;; with-input-from-stringを使って同じ事をしてみる。
  (with-input-from-string (foo "abc def")
    (read foo))
  => abc


■make-symbol
[Type       ]: Function
[Arguments  ]: make-symbol PRINT-NAME
[Package    ]: lisp
[Seealso    ]: intern , symbol-package
[File       ]: builtin.l
[Section    ]: シンボル
[Description]: 
印字名がPRINT-NAMEであるuninternedなシンボルを返します。

参考：
  evalmacs.l


■make-syntax-table
[Type       ]: Function
[Arguments  ]: make-syntax-table
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
シンタックステーブルを作成します。基本的に各文字にシンタックスコードを割
り振りますが、他にも目的の構文に応じて以下の設定を行います。

  ・文字列中のエスケープ文字の設定
  ・タグや括弧などの対応付けのある文字の設定
  ・単なる対になった区切り文字の設定
  ・コメントの設定
      ・開始終了を一文字で行うコメント
      ・開始終了を文字列で行うコメント
      ・C++スタイルのコメント
  ・特定行に文字があった場合のコメントの設定

これらの設定は set-syntax-... 系の関数を使って行います。設定に応じて、画
面の色付けやskip-syntax-spec-forward / skip-syntax-spec-backwardでの動作
が変わったりします。

デフォルト値：
  Num           Char            SyntaxCode
  ---           ----            ----------
  0x00          #\NUL           SCjunk
  0x01 .. 0x08  #\C-a .. #\C-h  SCjunk
  0x09          #\TAB           SCwhite
  0x0a          #\LFD           SCwhite
  0x0b          #\C-k           SCjunk
  0x0c          #\C-l           SCwhite
  0x0d          #\RET           SCwhite
  0x0e .. 0x1a  #\C-n .. #\C-z  SCjunk
  0x1b          #\ESC           SCjunk
  0x1c          #\C-\\          SCjunk
  0x1d          #\C-]           SCjunk
  0x1e          #\C-^           SCjunk
  0x1f          #\C-_           SCjunk
  0x20          #\SPC           SCwhite
  0x21 .. 0x2f  #\! .. #\/      SCpunct
  0x30 .. 0x39  #\0 .. #\9      SCword
  0x3a          #\:             SCpunct
  0x3b          #\;             SCpunct
  0x3c          #\<             SCpunct
  0x3d          #\=             SCpunct
  0x3e          #\>             SCpunct
  0x3f          #\?             SCpunct
  0x40          #\@             SCpunct
  0x41 .. 0x5a  #\A .. #\Z      SCword
  0x5b          #\[             SCpunct
  0x5c          #\\             SCpunct
  0x5d          #\]             SCpunct
  0x5e          #\^             SCpunct
  0x5f          #\_             SCpunct
  0x60          #\`             SCpunct
  0x61 .. 0x7a  #\a .. #\z      SCword
  0x7b          #\{             SCpunct
  0x7c          #\|             SCpunct
  0x7d          #\}             SCpunct
  0x7e          #\~             SCpunct
  0x7f          #\DEL           SCjunk
  0x80                          SCjunk
  0x81 ..0x9f   #\x81 .. #\x9f  SCkanji
  0xa0                          SCkanji
  0xa1 .. 0xb0  #\｡ .. #\ｰ      SCkana
  0xb1 .. 0xdd  #\ｱ .. #\ﾝ      SCkana
  0xde          #\ﾞ             SCkana
  0xdf          #\ﾟ             SCkana
  0xe0 .. 0xfc  #\xe0 .. #\xfc  SCkanji
  0xfd                          SCjunk
  0xfe                          SCjunk
  0xff                          SCjunk


■make-temp-file-name
[Type       ]: Function
[Arguments  ]: make-temp-file-name &optional PREFIX SUFFIX DIRECTORY DIRECTORY-P
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
一時作業用のファイルを作成しそのパスを返します。
ファイルは即時に作成されます。同じようにディレクトリを作成することも可能です。

  PREFIX      : 一時作業用のファイルの接頭子
  SUFFIX      : 一時作業用のファイルの拡張子
                指定が無ければ".tmp"となります。
  DIRECTORY   : 一時作業用のファイルを作成するディレクトリ
                指定が無ければ環境変数TMPに作成されます。
  DIRECTORY-P : ファイルではなくディレクトリを作成する場合
        t       ディレクトリを作成します。
        nil     ファイルを作成します。

使用例：
  ;;; C:\spoolに一時作業用ファイルを作成します。 
  (make-temp-file-name "_den" "tmp" "c:/spool")
  => "c:/spool/_denc0dc.tmp"


■make-two-way-stream
[Type       ]: Function
[Arguments  ]: make-two-way-stream INPUT-STREAM OUTPUT-STREAM
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 入出力
[Description]: 
入力をINPUT-STREAM、出力をOUTPUT-STREAMにする入出力ストリームを作成します。

参考：
        TWO WAY
          STREAM━┓    INPUT ━━┓
    ←─┨←───┨←─┨STREAM  ┃←─
        ┃        ┃    ┗━━━━┛
        ┃        ┃    OUTPUT━━┓
    ─→┠───→┠─→┃STREAM  ┠─→
        ┗━━━━┛    ┗━━━━┛


■make-variable-buffer-local
[Type       ]: Function
[Arguments  ]: make-variable-buffer-local SYMBOL
[Package    ]: editor
[Seealso    ]: make-local-variable
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
SYMBOLを個々のバッファで独自の値を持てるようにローカル変数にします。
make-local-variableとは異なり、全てのバッファが対象です。
余程のことが無い限りdefvar-localを使えば良いと思います。


■make-vector
[Type       ]: Function
[Arguments  ]: make-vector LENGTH &key (:element-type t) (:initial-element () ies-p) (:initial-contents () ics-p) :fill-pointer :adjustable :displaced-to (:displaced-index-offset 0)
[Package    ]: lisp
[Seealso    ]: vector , make-array
[File       ]: array.l
[Section    ]: 配列
[Description]: 
指定した長さのベクタを返します。

使用例：
  ;;; 長さが10のベクタを作ります。
  (make-vector 10)
  => #(nil nil nil nil nil nil nil nil nil nil)

  ;;; :element-typeにcharacterを指定すると文字列が作成できる
  (make-vector 10 :element-type 'character)
  => "^@^@^@^@^@^@^@^@^@^@"


■makunbound
[Type       ]: Function
[Arguments  ]: makunbound SYMBOL
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 変数と定数
[Description]: 
指定されたシンボルの値への束縛を解消します。
これ以降boundpはnilを返すようになります。シンボルへの値と関数定義の束縛
は独立しているので、makunboundをしてもfboundpの結果は変わりません。

使用例：
  ;;; 束縛を解消してみる。
  (set 'foo 2)          => 2
  (boundp 'foo)         => t
  (makunbound 'foo)     => foo
  (boundp 'foo)         => nil


■map
[Type       ]: Function
[Arguments  ]: map RESULT-TYPE FUNCTION SEQUENCE &rest MORE-SEQUENCES
[Package    ]: lisp
[Seealso    ]: make-sequence , mapcar
[File       ]: sequence.l
[Section    ]: シーケンス
[Description]: 
SEQUENCE に FUNCTION を適用して、RESULT-TYPE に応じたシーケンスを返します。

RESULT-TYPE は make-sequence の TYPE と同じものが使えます。
FUNCTION の引数は mapcar と同様、SEQUENCE の各要素をひとつずつ取り出したものとなります。
MORE-SEQUENCES がある場合もやはり mapcar と同じように適用されます。
  
mapcar との違いは文字列や配列にも適用できることと、RESULT-TYPE の指定が必要なことです。

使用例:
  ;;; 文字列の場合は一つ一つの要素が string ではなく char になることに注意
  (map 'list #'char-code "abc")
  => (97 98 99)


■map-backslash-to-slash
[Type       ]: Function
[Arguments  ]: map-backslash-to-slash STRING
[Package    ]: editor
[Seealso    ]: map-slash-to-backslash
[File       ]: builtin.l
[Section    ]: 文字列
[Description]: 
文字列のバックスラッシュをスラッシュに置換して返します。

  STRING : 変換対象の文字列

使用例：
  ;;; パスを変換する。
  (map-backslash-to-slash "C:\\xyzzy\\xyzzy.exe")
  => "C:/xyzzy/xyzzy.exe"


■map-char-encoding-region
[Type       ]: Function
[Arguments  ]: map-char-encoding-region P1 P2 &optional ENCODING
[Package    ]: editor
[File       ]: kanji.l
[Section    ]: テキスト
[Description]: 
リージョンの文字列データを文字エンコーディングが ENCODING のデータとして、
xyzzy内部コードへ変換します。
ENCODING が指定されない時は自動判定します。


■map-into
[Type       ]: Function
[Arguments  ]: map-into RESULT-SEQUENCE FUNCTION &rest SEQUENCES
[Package    ]: lisp
[Seealso    ]: map
[File       ]: sequence.l
[Section    ]: シーケンス
[Description]: 
SEQUENCES に map と同じように FUNCTION を適用し、その結果を 
RESULT-SEQUENCE に埋め込みます。RESULT-SEQUENCE が一番短い SEQUENCE より
も長い場合には RESULT-SEQUENCE の後部の余った要素は変化しません。
  
使用例:
  (map-into "abcde" #'char-upcase "fgh")
  => "FGHde"
  (map-into '(1 2 3) #'- '(4 5 6 7 8))
  => (-4 -5 -6)


■map-slash-to-backslash
[Type       ]: Function
[Arguments  ]: map-slash-to-backslash STRING
[Package    ]: editor
[Seealso    ]: map-backslash-to-slash
[File       ]: builtin.l
[Section    ]: 文字列
[Description]: 
文字列のスラッシュをバックスラッシュに置換して返します。

  STRING : 変換対象の文字列

使用例：
  ;;; パスを変換する。
  (map-slash-to-backslash "C:/xyzzy/xyzzy.exe")
  => "C:\\xyzzy\\xyzzy.exe"


■mapc
[Type       ]: Function
[Arguments  ]: mapc FUNCTION LIST &rest MORE-LISTS
[Package    ]: lisp
[Seealso    ]: mapcar
[File       ]: builtin.l
[Section    ]: 制御構造
[Description]: 
引数の渡し方はmapcarとよく似ていますが、戻り値には与えられたリストをその
まま返します。

--- 原文 ---
Description: similar to mapcar except that the value returned is list 
rather than a list of values returned by the calls to function. As such, 
a mapc form is evaluated for its side effects rather than the value it 
returns.

--- 意訳 ---
mapcは戻り値が、FUNCTIONによって返された値のリストではなくもともとの引数
であるLISTな点を除いて、macpcarに良く似ている。そのため、mapcは戻り値
ではなく副作用を目的として評価される。


■mapcan
[Type       ]: Function
[Arguments  ]: mapcan FN LISTS &rest MORE-LISTS
[Package    ]: lisp
[Seealso    ]: mapcar
[File       ]: evalmacs.l
[Section    ]: 制御構造
[Description]: 
引数の渡し方はmapcarによく似ていますが、関数の呼び出し結果のリストをくっ
つけたものを返します。

--- 原文 ---
Description: similar to mapcar except that the values returned by calls 
to function are combined using the destructive function nconc rather than 
the non-destructive function list. As such, mapcan can potentially destroy 
its arguments.

--- 意訳 ---
mapcanはFUNCTIONによって返された値が（non-destructiveな関数listではなく、
destructiveな関数nconcによって）結合されることを除いて、mapcarに良く似て
いる。そのため、mapcanはその定義から引数を破壊することになっている。

使用例：
  ;;; mapcanとmapcarとの違い
  (mapcan #'(lambda (x) (and (characterp x) (list (char-name x))))
          '(456 #\A 789 #\b #\c 123))
  => ("latin_capital_letter_a" "latin_small_letter_b" "latin_small_letter_c")
  (mapcar #'(lambda (x) (and (characterp x) (list (char-name x))))
          '(456 #\A 789 #\b #\c 123))
  => (nil ("latin_capital_letter_a") nil ("latin_small_letter_b") ("latin_small_letter_c") nil)


■mapcar
[Type       ]: Function
[Arguments  ]: mapcar FUNCTION LIST &rest MORE-LISTS
[Package    ]: lisp
[Seealso    ]: maplist
[File       ]: builtin.l
[Section    ]: 制御構造
[Description]: 
引数のリストから関数の戻り値のリストを作成して返します。
初回は各リストのcarを、二回目はcadrを、三回目はcaddrを関数に渡します。
リストが複数の場合が分かりにくいので図示します。

  ;;; リストが一つ      ┌──┐┌──┐┌──┐
  (mapcar #'char-name '(│ #\a││ #\b││ #\c│))
                        └─┬┘└─┬┘└─┬┘
                    ┌───┘      │      └───┐
                    ↓              ↓              ↓
  == (list (char-name #\a) (char-name #\b) (char-name #\c))
  == (list "latin_small_letter_a" "latin_small_letter_b" "latin_small_letter_c")
  => ("latin_small_letter_a" "latin_small_letter_b" "latin_small_letter_c")

  ;;; リストが複数   ┌─┐┌─┐┌─┐
  (mapcar #'+      '(│ 1││ 2││ 3│ 4)
                   '(│ 1││ 3││ 5│  )
                   '(│ 1││ 4││ 9│16)
                   '(│ 1││ 8││27│  )) 
                     └┬┘└┬┘└┬┘
             ┌────┘┌─┘    │   
             ↓          ↓        ↓         
  == (list (+ 1 1 1 1) (+ 2 3 4 8) (+ 3 5 9 27))
  == (list 4 17 44)
  => (4 17 44)

--- 原文 ---
Description: passes successive, corresponding top level elements of each 
of the lists to function. function should thus be able to accept as many 
arguments as there are lists. The value returned by mapcar is a list of 
the values returned by each function call. If the argument lists are not 
of equal length, evaluation of the mapcar form is terminated when the 
last element of the shortest list has been passed to function. Any elements 
in the other lists that have not been processed are ignored.

--- 意訳 ---
mapcar は各リストの最上位の対応する要素群を FUNCTION に引き渡します。
FUNCTION はリストのような多くの引数を受け入れられなければなりません。
mapcar が返す値は、FUNCTION のそれぞれの呼び出した値のリストです。もし、
引数のリストが同じ長さでなかったら、mapcar の評価は一番短いリストで終わ
ります。

使用例：
  (mapcar #'+ '(1 2 3 4) 
              '(1 3 5) 
              '(1 4 9 16) 
              '(1 8 27)) 
  => (4 17 44)


■mapcon
[Type       ]: Function
[Arguments  ]: mapcon FN LISTS &rest MORE-LISTS
[Package    ]: lisp
[Seealso    ]: maplist
[File       ]: evalmacs.l
[Section    ]: 制御構造
[Description]: 
引数の渡し方はmaplistによく似ていますが、関数の呼び出し結果のリストをくっ
つけたものを返します。


■maphash
[Type       ]: Function
[Arguments  ]: maphash FUNCTION HASH-TABLE
[Package    ]: lisp
[Seealso    ]: with-hash-table-iterator
[File       ]: hash.l
[Section    ]: ハッシュ
[Description]: 
ハッシュテーブルの各要素を関数に渡します。

  FUNCTION   : キーと値を受け取る関数
  HASH-TABLE : ハッシュテーブルを指定します。

使用例：
  (setf (gethash #\a hsh) "Apple")  => "Apple"
  (setf (gethash #\b hsh) "Banana") => "Banana"
  (setf (gethash #\c hsh) "Cake")   => "Cake"
  (with-output-to-selected-buffer
    (maphash #'(lambda (x y) (format t "~S ~S~%"x y)) hsh))
  #\a "Apple"
  #\b "Banana"
  #\c "Cake"


■mapl
[Type       ]: Function
[Arguments  ]: mapl FUNCTION LIST &rest MORE-LISTS
[Package    ]: lisp
[Seealso    ]: maplist
[File       ]: builtin.l
[Section    ]: 制御構造
[Description]: 
引数の渡し方はmaplistとよく似ていますが、戻り値には与えられたリストをそ
のまま返します。


■maplist
[Type       ]: Function
[Arguments  ]: maplist FUNCTION LIST &rest MORE-LISTS
[Package    ]: lisp
[Seealso    ]: mapcar
[File       ]: builtin.l
[Section    ]: 制御構造
[Description]: 
引数のリストから関数の戻り値のリストを作成して返します。
初回は各リストを、二回目はcdrを、三回目はcddrを関数に渡します。

--- 原文 ---
Description: similar to mapcar but passes successive, corresponding tails 
of the argument lists to function. So, on the first call to function, the 
argument lists are passed in their entirety. On the second call the cdr 
of each argument list is passed. On the third, the cddr of each argument 
list is passed, and so on. This process is repeated until the tail of an 
argument list is a null list. The value returned by maplist is a list of 
the values returned by each call to function.

--- 意訳 ---
maplist は、FUNCTION に対応するテイルの部分を FUNCTION に渡すことを除い
て、mapcar に良く似ている。FUNCTION の最初の呼び出しで、引数のリストは完
全に渡されます。二度目の呼び出しでは各引数の、 cdr  が渡されます。

使用例：
  (maplist #'(lambda (x) (cons 'foo x)) '(a b c d))
  => ((foo a . #1=(b . #2=(c . #3=(d)))) (foo . #1#) (foo . #2#) (foo . #3#))


■mark
[Type       ]: Function
[Arguments  ]: mark &optional FORCE
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
マークの位置を数値で返します。

  FORCE：マークが設定されていない場合に処理を継続するか？
        t       エラーとしない、関数はnilを返す
        nil     エラーとする


■mark-dialog-box
[Type       ]: Function
[Arguments  ]: mark-dialog-box
[Package    ]: editor
[File       ]: gmark.l
[Section    ]: ダイアログ
[Description]: 
マークダイアログを表示します。[C-F2]

マークダイアログからは、グローバルマークを設定することができ、複数のポイ
ント間を移動することができます。

  移動   : 選択したマークに移動します。
  追加   : マークを追加します。
  削除   : 選択したマークを削除します。
  全削除 : 全てのマークを削除します。


■mark-paragraph
[Type       ]: Function
[Arguments  ]: mark-paragraph
[Package    ]: editor
[File       ]: paragrph.l
[Section    ]: リージョン
[Description]: 
段落の末尾にマークを、先頭にポイントを設定します。


■mark-sexp
[Type       ]: Function
[Arguments  ]: mark-sexp &optional (ARG 1)
[Package    ]: editor
[File       ]: sexp.l
[Section    ]: 関数
[Description]: 
前方のS式の末尾にマークを設定します。[ESC NUL]


■mark-whole-buffer
[Type       ]: Function
[Arguments  ]: mark-whole-buffer &optional ARG
[Package    ]: editor
[File       ]: cmds.l
[Section    ]: リージョン
[Description]: 
バッファ全体をリージョンにします。

ARG が
  nil ならバッファの末尾にマークを設定し、バッファの先頭に移動
  non-nil ならバッファの先頭にマークを設定し、バッファの末尾に移動


■mark-word
[Type       ]: Function
[Arguments  ]: mark-word &optional (ARG 1)
[Package    ]: editor
[Seealso    ]: set-mark-command , forward-word
[File       ]: cmds.l
[Section    ]: リージョン
[Description]: 
カーソル位置前方の単語の末尾にマークを設定します。[ESC @]
カーソルが単語の途中にある場合は、その単語の末尾にマークを設定します。


■marker-buffer
[Type       ]: Function
[Arguments  ]: marker-buffer MARKER
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
マーカーが設定されているバッファを返します。

使用例：
  (marker-buffer m)
  => #<buffer: *scratch*>


■marker-point
[Type       ]: Function
[Arguments  ]: marker-point MARKER
[Package    ]: editor
[Seealso    ]: set-marker
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
マーカーの位置を数値で返します。
マーカーの位置が設定されていなかったり削除されていたりした場合は nil を返します。

使用例：
  (marker-point m)
  => 62


■markerp
[Type       ]: Function
[Arguments  ]: markerp OBJECT
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
指定されたOBJECTがマーカーかを返します。

  t     OBJECTはマーカー
  nil   OBJECTはマーカーではない


■match-beginning
[Type       ]: Function
[Arguments  ]: match-beginning REGNUM
[Package    ]: editor
[Seealso    ]: match-end , match-string
[File       ]: builtin.l
[Section    ]: 検索・正規表現
[Description]: 
正規表現を使った検索後に一致した先頭のポイントを取得できます。

  REGNUM : 取得したい文字列を指定
        0の場合         正規表現全体に一致する文字列を取得
        1-9の場合       正規表現中のREGNUM番目の括弧に対応した文字列を取得


■match-data
[Type       ]: Function
[Arguments  ]: match-data &optional DATA
[Package    ]: editor
[Seealso    ]: store-match-data , scan-buffer
[File       ]: builtin.l
[Section    ]: 検索・正規表現
[Description]: 
scan-buffer で検索時点の状態を保持します。複数の検索をした後で、元の
検索の結果で match-string / match-beginning / match-end / replace-match 
を行うことが可能です。

使用例：
  ;;; カーソルより後ろにabcdefと文字列があった場合
  ;;; 検索を2回してからその結果をそれぞれ取得する。
  (let (1st 2nd)
    ; 検索
    (scan-buffer "a\\(\\w*\\)" :regexp t)
    (setq 1st (match-data))
    (scan-buffer "abc\\(\\w*\\)" :regexp t)
    (setq 2nd (match-data))
    ; 結果参照
    (store-match-data 1st)
    (msgbox "~A" (match-string 1))
    (store-match-data 2nd)
    (msgbox "~A" (match-string 1)))


■match-end
[Type       ]: Function
[Arguments  ]: match-end REGNUM
[Package    ]: editor
[Seealso    ]: match-beginning , match-string
[File       ]: builtin.l
[Section    ]: 検索・正規表現
[Description]: 
正規表現を使った検索後に一致した最後のポイントを取得できます。

  REGNUM : 取得したい文字列を指定
        0の場合         正規表現全体に一致する文字列を取得
        1-9の場合       正規表現中のREGNUM番目の括弧に対応した文字列を取得


■match-string
[Type       ]: Function
[Arguments  ]: match-string REGNUM
[Package    ]: editor
[Seealso    ]: match-beginning , match-end , match-data , store-match-data , scan-buffer , 正規表現の表記
[File       ]: builtin.l
[Section    ]: 検索・正規表現
[Description]: 
正規表現を使った検索後に一致した文字列を取得することができます。
(buffer-substring (match-beginning REGNUM) (match-end REGNUM))に一致します。

  REGNUM : 取得したい文字列を指定
        0の場合         正規表現全体に一致する文字列を取得
        1-9の場合       正規表現中のREGNUM番目の括弧に対応した文字列を取得

使用例：
  ;;; 次に現れるLispのコメントを取得する。
  (progn
    (scan-buffer ";\\([^;\n]+\\)" :regexp t :no-dup nil)
    (match-string 1))


■max
[Type       ]: Function
[Arguments  ]: max NUMBER &rest MORE-NUMBERS
[Package    ]: lisp
[Seealso    ]: min
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
引数の中で最大の数値を返します。

使用例：  
  (max 3)
  => 3
  (max -3 0 2)
  => 2
  (max 2.5 1)
  => 2.5
  (max 3 2.5)
  => 3


■mc-autoload
[Type       ]: Function
[Arguments  ]: mc-autoload FN FILE &optional COMMANDP MACROP ENCODING
[Package    ]: lisp
[Seealso    ]: autoload , mc-load-library , mc-load-file
[File       ]: misc.l
[Section    ]: 評価
[Description]: 
Shift-JIS 以外のエンコーディングのファイルに定義された関数を autoload するよう設定します。

  FN       : 関数シンボル
  FILE     : 関数が定義されたファイル名
  COMMANDP : interactive 関数かどうか
  MACROP   : マクロかどうか
  ENCODING : FILE を読み込む際のエンコーディング


■mc-load-file
[Type       ]: Function
[Arguments  ]: mc-load-file FILENAME &optional ENCODING
[Package    ]: lisp
[Seealso    ]: load-file , mc-autoload , mc-load-library
[File       ]: misc.l
[Section    ]: 評価
[Description]: 
Shift-JIS 以外のエンコーディングのファイルを読み込みます。
mc-load-library と違い、*load-path* にないファイルも読み込めます。
  
  FILENAME : ファイル名（フルパス）
  ENCODING : 読み込むファイルのエンコーディング


■mc-load-library
[Type       ]: Function
[Arguments  ]: mc-load-library FILENAME &key :encoding :no-suffix (:if-does-not-exist :error)
[Package    ]: lisp
[Seealso    ]: load-library , mc-autoload , mc-load-file
[File       ]: misc.l
[Section    ]: 評価
[Description]: 
Shift-JIS 以外のエンコーディングのファイルを読み込みます。

  FILENAME           : ファイル名
  :encoding          : 読み込むファイルのエンコーディング
  :no-suffix         : ファイルを *load-path* から探すかどうか指定します。
        t                ファイルを find-load-path で探します。
        nil              FILENAME をそのまま使います。
  :if-does-not-exist : ファイルが見つからなかった場合の挙動を指定します。
        :error           エラーを返します。デフォルトの挙動です。
        それ以外         nil を返します。


■member
[Type       ]: Function
[Arguments  ]: member ITEM LIST &key :test :test-not :key
[Package    ]: lisp
[Seealso    ]: member-if , member-if-not , find , position
[File       ]: builtin.l
[Section    ]: リスト
[Description]: 
LIST の中で ITEM との :test を満たすものがあれば一致したところからのリストを返します。
なければ nil を返します。

使用例：
  (member 'e '(a b c d))
  => nil
  (member 'b '(a b c d))
  => (b c d)


■member-if
[Type       ]: Function
[Arguments  ]: member-if PREDICATE LIST &key :key
[Package    ]: lisp
[Seealso    ]: member , member-if-not
[File       ]: builtin.l
[Section    ]: リスト
[Description]: 
LIST の中で条件 PREDICATE を満たすものがあれば、そこからのリストを返します。
なければ nil を返します。

使用例：
  (member-if #'numberp '(a b c))
  => nil
  (member-if #'numberp '(a b 3 c))
  => (3 c)


■member-if-not
[Type       ]: Function
[Arguments  ]: member-if-not PREDICATE LIST &key :key
[Package    ]: lisp
[Seealso    ]: member , member-if
[File       ]: builtin.l
[Section    ]: リスト
[Description]: 
LIST の中で条件 PREDICATE を満たさないものがあれば、そこからのリストを返します。
なければ nil を返します。

使用例：
  (member-if-not #'numberp '(1 2 3))
  => nil
  (member-if-not #'numberp '(1 2 a 3))
  => (a 3)


■menup
[Type       ]: Function
[Arguments  ]: menup OBJECT
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: メニュー
[Description]: 
オブジェクトがメニューかどうかを返します。

  OBJECT : 判定するオブジェクト

  t   オブジェクトはメニュー
  nil オブジェクトはメニューではない


■merge
[Type       ]: Function
[Arguments  ]: merge RESULT-TYPE SEQUENCE1 SEQUENCE2 PREDICATE &key :key
[Package    ]: lisp
[Seealso    ]: stable-sort
[File       ]: sequence.l
[Section    ]: シーケンス
[Description]: 
SEQUENCE1とSEQUENCE2を併合します。SEQUENCE1とSEQUENCE2は破壊されません。
PREDICATEによりSEQUENCE1とSEQUENCE2の値を比較し、非nilならば SEQUENCE1の値を 
nil ならば SEQUENCE2の値を順にマージしていきます。

  RESULT-TYPE : 結果となるシーケンスの型を指定します。
  PREDICATE   : シーケンス同士を比較する関数を指定します。
  :key        : 比較対照を取得する関数を指定します。

例
  (merge 'list '(1 2 3 5 8) '(2 4 6) #'<) => (1 2 2 3 4 5 6 8)
  (merge 'string "AbCF" "aBcd" #'char-lessp) => "AabBCcdF"


■merge-pathnames
[Type       ]: Function
[Arguments  ]: merge-pathnames PATHNAME &optional DEFAULTS
[Package    ]: lisp
[Seealso    ]: file-namestring , namestring
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
パスとファイル名をくっつけます。

  PATHNAME : ファイル名の部分を指定します。
  DEFUALTS : パスの部分を指定します。
             指定しないと(default-directory)のパスが使用されます。

使用例：
  ;;; "c:/foo"と"bar.l"をくっつける。
  (merge-pathnames "bar.l" "c:/foo")
  => "c:/foo/bar.l"

  (merge-pathnames "bar.l" "c:/foo/") <--ディレクトリの末尾に/がつい
  => "c:/foo/bar.l"                      ているかとか気にしなくていい。


■message
[Type       ]: Function
[Arguments  ]: message FMT &rest ARGS
[Package    ]: lisp
[Seealso    ]: clear-message , msgbox , message-box , minibuffer-message , with-interval-message , format
[File       ]: misc.l
[Section    ]: 入出力
[Description]: 
メッセージをステータスバーに出力します。

  FMT  : format同様の書式が指定できます。
  ARGS : 出力書式へのパラメタとなります。


■message-box
[Type       ]: Function
[Arguments  ]: message-box MESSAGE &optional TITLE STYLES &key :button1 :button2 :button3 :button4 :button5 :no-wrap
[Package    ]: editor
[Seealso    ]: yes-or-no-p , msgbox
[File       ]: builtin.l
[Section    ]: ダイアログ
[Description]: 
yes-or-no-p 系よりも柔軟なダイアログを表示します。

  MESSAGE  : ダイアログに表示するメッセージを指定します。
  TITLE    : ダイアログのタイトルを指定します。
  STYLES   : ダイアログのスタイルをリストで指定します。
        :ok                     [OK] を表示します。
        :ok-cancel              [OK][キャンセル] を表示します。
        :yes-no                 [はい][いいえ] を表示します。
        :yes-no-cancel          [はい][いいえ][キャンセル] を表示します。
        :abort-retry-ignore     [中止][再試行][無視] を表示します。
        :information            (i) インフォメーションマークを表示します。
        :exclamation            (!) 感嘆符を表示します。
        :question               (?) 疑問符を表示します。
        :button1                ボタン 1 をデフォルト選択にします。
        :button2                ボタン 2 をデフォルト選択にします。
        :button3                ボタン 3 をデフォルト選択にします。
        :button4                ボタン 4 をデフォルト選択にします。
        :button5                ボタン 5 をデフォルト選択にします。
  :BUTTON1 : ボタン 1 のテキストを変更します。
  :BUTTON2 : ボタン 2 のテキストを変更します。
  :BUTTON3 : ボタン 3 のテキストを変更します。
  :BUTTON4 : ボタン 4 のテキストを変更します。
  :BUTTON5 : ボタン 5 のテキストを変更します。
  :NO-WRAP : MESSAGE が長すぎるときに折り返すかを制御します。
        t       長くとも折り返さない。
        nil     長ければ折り返す。

ボタンを押したときの戻り値は、それぞれ以下のとおりです。

  :ok     [OK] を選択
  :cancel [キャンセル] を選択
  :yes    [はい] を選択
  :no     [いいえ] を選択
  :abort  [中止] を選択
  :retry  [再試行] を選択
  :ignore [無視] を選択

使用例：
  ;;; [はい][いいえ][キャンセル] を表示し選択させます。
  (message-box "メールを送信しますか?" nil
    '(:yes-no-cancel :question :button1))
  => :yes

  ;;; ダイアログの結果を case で場合わけしてみる
  (case (message-box "メールを送信しますか?" nil
                     '(:yes-no-cancel :question :button1))
    (:yes (den8-draft-send t))
    (:no t)
    (t nil))


■meta-prefix
[Type       ]: Function
[Arguments  ]: meta-prefix
[Package    ]: editor
[Seealso    ]: esc-map
[File       ]: keymap.l
[Section    ]: キーマップ
[Description]: 
ESC プレフィックスです。 [ESC]

meta-prefix の関数セルは普通のコマンドではなく esc-map というキーマッ
プを保持しています。


■min
[Type       ]: Function
[Arguments  ]: min NUMBER &rest MORE-NUMBERS
[Package    ]: lisp
[Seealso    ]: max
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
引数の中で最小の数値を返します。

使用例：
  (min 3)
  => 3
  (min -2 0 3)
  => -2
  (min 2.5 1)
  => 1


■minibuffer-message
[Type       ]: Function
[Arguments  ]: minibuffer-message FMT &rest ARGS
[Package    ]: editor
[Seealso    ]: clear-minibuffer-message , minibuffer-prompt , format
[File       ]: misc.l
[Section    ]: ミニバッファ
[Description]: 
書式に従ってミニバッファにメッセージを表示します。 
ミニバッファにカーソルが表示されない以外は minibuffer-prompt と同じ？

  FMT  : format 同様の書式
  ARGS : 出力書式へのパラメタ


■minibuffer-prompt
[Type       ]: Function
[Arguments  ]: minibuffer-prompt FMT &rest ARGS
[Package    ]: editor
[File       ]: misc.l
[Section    ]: ミニバッファ
[Description]: 
書式に従ってミニバッファにメッセージを表示します。
その後read-charを使ってキーボードから文字を読み込めば、
凝ったミニバッファからの入力が可能になります。

  FMT  : format同様の書式が指定できます。
  ARGS : 出力書式へのパラメタとなります。

使用例：
  ;;; 以下のようにすると、パスワード入力のようにエコーバックしない。
  minibuffer入力が可能
  (defun test1 ()
    (interactive)
    (let ((ans ""))
      (loop
        (minibuffer-prompt "From ~d: " 12)
        (let ((c (read-char *keyboard*)))
          (case c
            (#\RET (return ans))
            (#\C-g (quit))
            (t (setq ans (format nil "~a~c" ans c))))))))  

参考：
  wip/ftp.lのgetpass


■minibuffer-window
[Type       ]: Function
[Arguments  ]: minibuffer-window
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ミニバッファ
[Description]: 
ミニバッファのウインドウを取得します。

使用例：
  ;;; ミニバッファに移動する。
  (set-window (minibuffer-window))


■minibuffer-window-p
[Type       ]: Function
[Arguments  ]: minibuffer-window-p WINDOW
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ミニバッファ
[Description]: 
ウィンドウがミニバッファかどうかを返します。

  WINDOW：ミニバッファかどうかを調べるウィンドウ 

  t     ミニバッファである
  nil   ミニバッファではない

使用例：
  ;;; ミニバッファでは別のバッファに変更できないので別のウィンドウに移動する。
  (if (minibuffer-window-p (selected-window))
      (other-window))
  => t


■minor-mode-map
[Type       ]: Function
[Arguments  ]: minor-mode-map &optional BUFFER
[Package    ]: editor
[Seealso    ]: set-minor-mode-map
[File       ]: builtin.l
[Section    ]: モード
[Description]: 
set-minor-mode-mapで設定したキーマップを取得します。


■minusp
[Type       ]: Function
[Arguments  ]: minusp NUMBER
[Package    ]: lisp
[Seealso    ]: plusp
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
NUMBER がゼロより小さければ t 、そうでなければ nil を返します。

使用例：
  (minusp 0)
  => nil
  (minusp -1)
  => t
  (minusp -0.00001)
  => t


■mismatch
[Type       ]: Function
[Arguments  ]: mismatch SEQUENCE1 SEQUENCE2 &key :from-end :test :test-not (:key #'identity) (:start1 0) (:start2 0) :end1 :end2
[Package    ]: lisp
[File       ]: sequence.l
[Section    ]: シーケンス
[Description]: 
SEQUENCE1 と SEQUENCE2 を比較し、一致しない要素のインデックスを返します。

  :start1  SEQUENCE1 の比較開始位置
  :start2  SEQUENCE2 の比較開始位置
  :end1    SEQUENCE1 の比較終了位置
  :end2    SEQUENCE2 の比較終了位置

:start1 と :start2 の値が異なる場合、SEQUENCE1 内でのインデックスを返します。

使用例:
  (mismatch "abcd" "abxd")
  => 2

備考:
  :from-end は実装されていないようです。


■mod
[Type       ]: Function
[Arguments  ]: mod NUMBER DIVISOR
[Package    ]: lisp
[Seealso    ]: floor , rem
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
(floor NUMBER DIVISOR)の戻り値の二つ目を返します。

使用例：
  (mod 13 4)
  => 1
  (mod -13 4)
  => 3


■mode-line-format
[Type       ]: BufferLocal
[Package    ]: editor
[Seealso    ]: update-mode-line , title-bar-format
[Section    ]: ウィンドウ
[Description]: 
モードラインのフォーマットを設定します。
タイトルバーのフォーマットと同様ですので、title-bar-formatを参照して下さい。


■mode-name
[Type       ]: BufferLocal
[Package    ]: editor
[Section    ]: 変数と定数
[Description]: 
モードの名前を格納しているローカル変数です。
？mode-nameとbuffer-modeは必ずローカル変数になるのでしょうか？


■mode-specific-indent-command
[Type       ]: BufferLocal
[Package    ]: editor
[Seealso    ]: indent-region
[Section    ]: モード
[Description]: 
indent-regionを参照のこと

使用例：
  ;;; 適当なモードで以下をevalしてみると、
  ;;; "ラベル:" のような行は行頭からになり、それ以外の行は8桁目からになる。
  (progn
    (make-local-variable 'mode-specific-indent-command)
    (setq mode-specific-indent-command
        #'(lambda () (save-excursion
                       (goto-bol)
                       (delete-horizontal-spaces)
                       (or (looking-at "^\\w+:") (indent-to 8))))))


■modify-text-attributes
[Type       ]: Function
[Arguments  ]: modify-text-attributes TAG &key :foreground :background :bold :underline :strike-out :prefix :extend :start :end :test :test-not :key
[Package    ]: editor
[Seealso    ]: set-text-attribute , set-text-color
[File       ]: builtin.l
[Section    ]: テキスト
[Description]: 
set-text-attribute で付けた領域の属性を変更します。
属性は引き継がれません。
例えば、set-text-attribute では :underline t としてから、
modify-text-attributes で :strike-out t としても、
下線と取り消し線の両方が表示される訳ではありません。

  TAG           set-text-attributeで指定したタグ
  :bold         ボールドで表示するかどうか
  :underline    下線付きで表示するかどうか
  :strike-out   取り消し線を表示するかどうか
  :foreground   文字色を整数で指定
  :background   背景色を整数で指定
  :prefix       使い方は不明
  :extend       行末の改行文字以降も変えるかどうか

使用例：
  ;;; バッファ全体をに下線を付けてから取り消し線にする。
  (set-text-attribute (point-min) (point-max) 'all :bold t :foreground 1)
  => t
  (modify-text-attributes 'all :strike-out t)
  => t
  (delete-text-attributes 'all)
  => t


■modify-text-attributes-if
[Type       ]: Function
[Arguments  ]: modify-text-attributes-if TEST &key :foreground :background :bold :underline :strike-out :prefix :extend :start :end :key
[Package    ]: editor
[Seealso    ]: modify-text-attributes-if-not , modify-text-attributes , set-text-attribute
[File       ]: builtin.l
[Section    ]: テキスト
[Description]: 
テキスト属性のうち、タグが TEST を満たすものすべてについて、属性を変更します。
属性は引き継がれません。
範囲を指定した場合、開始点が範囲に含まれるもののみ変更されます。

  :bold        ボールドで表示するかどうか
  :underline   下線付きで表示するかどうか
  :strike-out  取り消し線を表示するかどうか
  :foreground  文字色を整数で指定
  :background  背景色を整数で指定
  :prefix      行番号部分に表示する文字
  :extend      行末の改行文字以降も変えるかどうか
  :start       検索開始位置
  :end         検索終了位置
  :key         TEST に渡す前にタグに適用する関数


■modify-text-attributes-if-not
[Type       ]: Function
[Arguments  ]: modify-text-attributes-if-not TEST &key :foreground :background :bold :underline :strike-out :prefix :extend :start :end :key
[Package    ]: editor
[Seealso    ]: modify-text-attributes , modify-text-attributes-if
[File       ]: builtin.l
[Section    ]: テキスト
[Description]: 
テキスト属性のうち、タグが TEST を満たさないものすべてについて、属性を変更します。
属性は引き継がれません。
範囲を指定した場合、開始点が範囲に含まれるもののみ変更されます。

  :bold        ボールドで表示するかどうか
  :underline   下線付きで表示するかどうか
  :strike-out  取り消し線を表示するかどうか
  :foreground  文字色を整数で指定
  :background  背景色を整数で指定
  :prefix      行番号部分に表示する文字
  :extend      行末の改行文字以降も変えるかどうか
  :start       検索開始位置
  :end         検索終了位置
  :key         TEST に渡す前にタグに適用する関数


■mouse-menu-popup
[Type       ]: Function
[Arguments  ]: mouse-menu-popup &optional APPS
[Package    ]: editor
[File       ]: mouse.l
[Section    ]: メニュー
[Description]: 
ポップアップメニューを表示します。

  APPS  : メニューの表示位置を指定します。
     nil      マウスカーソル位置
     non-nil  カーソル位置


■msgbox
[Type       ]: Function
[Arguments  ]: msgbox FMT &rest ARGS
[Package    ]: editor
[Seealso    ]: message-box , format
[File       ]: misc.l
[Section    ]: ダイアログ
[Description]: 
メッセージボックスを表示します。
[OK] ボタンとインフォメーションアイコンが表示されます。

  FMT  : format の出力書式と同じものを指定できます。
  ARGS : 出力書式へのパラメタとなります。

戻り値は :ok となります。

使用例：
  ;;; 出力書式で整形してみる。
  (msgbox "このバッファは ~A です。" buffer-mode)
  => :ok


■multiple-value-bind
[Type       ]: Special Form
[Arguments  ]: multiple-value-bind ({VAR}*) VALUES-FORM {declaration}* {FORM}*
[Package    ]: lisp
[Seealso    ]: values , multiple-value-list , multiple-value-setq
[Link       ]: http://www.geocities.jp/m_hiroi/
[File       ]: builtin.l
[Section    ]: 変数と定数
[Description]: 
フォームが返す多値を受け取ります。広井さんの"xyzzy Lisp Programming"の
解説が分かり易いので掲載の許可を頂きました。以下を参照して下さい。

--- 引用開始  ---
複数の値を受け取るには、マクロ multiple-value-bind を使うと簡単です。 

multiple-value-bind (&rest vars) values-form &rest form

multiple-value-bind は、多値を返す関数 values-form を評価し、その結果を 
vars で定義した変数にセットします。変数は局所変数として設定されるので、
multiple-value-bind を実行している間だけ有効です。簡単な例を示しましょう。
Common Lisp には、整数でない値を整数に変換する関数 floor, ceiling, 
truncate, round が定義されています。これらの関数は２つの値（多値）を返します。

  (truncate 10 3)
  => 3

  (multiple-value-bind
  (q r)
  (truncate 10 3)
  (format nil "商 ~D, 余り ~D~%" q r))
  => "商 3, 余り 1"

関数 truncate は割り算を行って商と余りを返します。ふつうに truncate を呼
び出すと商を返すだけですが、multiple-value-bind を使うと、商のほかに余り
も受け取ることができます。q と r は truncate が返す値を受け取る変数です。
次に、truncate を評価して結果を変数にセットします。あとは、残りの form 
を順番に評価していきます。 multiple-value-bind は最後に評価した form の
値を返します。

もしも、返される値よりも変数の個数が多い場合、残りの変数には nil がセッ
トされます。逆に、返される値が変数よりも多い場合、余分な値は捨てられます。
次の例を見てください。

  (multiple-value-bind (q)
  (truncate 10 3)
  (list q))
  => (3)
  
  (multiple-value-bind (q r s)
  (truncate 10 3)
  (list q r s))
  => (3 1 nil)

最初の例では、変数 q しか定義されていないので、 q には商がセットされます
が余りは捨てられます。次の例では、変数 s が定義されていますが、truncate 
は２つの値しか返さないので、 s には nil がセットされます。
--- 引用終了 ---

--- 原文 ---
Description: evaluates values-form and binds each of the variables provided 
to the respective value returned. If there are more variables than values 
returned, nil is bound to the excess variables. If there are more values 
returned that variables the excess values are discarded. The form arguments 
are then evaluated as an implicit progn construct. The multiple-value-bind 
form returns the value or values returned by evaluating the last form 
argument. See also let.

 (multiple-value-bind (a b c d e)
    (values 1 2 3 4 5)
  (format nil "~D ~D ~D ~D ~D" a b c d e))
 => "1 2 3 4 5"


■multiple-value-list
[Type       ]: Macro
[Arguments  ]: multiple-value-list FORM
[Package    ]: lisp
[Seealso    ]: values , multiple-value-bind , multiple-value-setq
[File       ]: evalmacs.l
[Section    ]: 変数と定数
[Description]: 
関数が返した多値をリストで返します。

使用例：
  (defun foo () (values 1 2 3))
  => foo
  (foo)
  => 1
     2
     3
  (multiple-value-list (foo))
  => (1 2 3)


■multiple-value-setq
[Type       ]: Special Form
[Arguments  ]: multiple-value-setq VARIABLES FORM
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 変数と定数
[Description]: 
返された多値を個々の変数に設定します。
変数の個数よりもフォームが返した値の数が多いときには余った分は捨てられま
す。少ない場合には、足りない分だけnilが設定されます。

  VARIABLES : 変数のリスト
  FORM      : 評価するフォーム

使用例：
  ;;; valuesで多値を返した場合
  (setq a (values 1 2)) => 1
  a                     => 1
  (multiple-value-setq (a b) (values 1 2))
                        => 1
  a                     => 1
  b                     => 2


■namestring
[Type       ]: Function
[Arguments  ]: namestring PATHNAME
[Package    ]: lisp
[Seealso    ]: file-namestring , merge-pathnames
[File       ]: builtin.l
[Section    ]: 文字列
[Description]: 
PATHNAMEの内容に応じて適切なフルパスを返すような動きをする。与えたのがフ
ルパスでなければ、先頭に(default-directory)を補ってフルパスらしくします。
使用例：
  (default-directory)
  =>"C:/Applications/xyzzy/"

  (namestring "abc.txt")
  =>"C:/Applications/xyzzy/abc.txt"

  (namestring "Z:/zzz.txt")
  =>"Z:/zzz.txt"


■narrow-to-region
[Type       ]: Function
[Arguments  ]: narrow-to-region FROM TO
[Package    ]: editor
[Seealso    ]: hide-restricted-region , save-restriction , widen
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
指定した範囲以外を移動・編集できないようにします。[C-x n]
save-restrictionのブロックが終了するか、widenすると元に戻ります。
point-min, point-maxの値も変わります。

使用例：
  C-SPCでマークを付けて、どっかに移動して、C-x n(narrow-to-region)とする
  と、指定したリージョンの外には移動できなくなります。私は置換のときに置き
  換える範囲を制限したり、キーボードマクロの範囲を制限したりするのによく使
  います。あとは、Lispコードの中で特定の範囲だけいじるときなんかにも使いま
  す。


■nbutlast
[Type       ]: Function
[Arguments  ]: nbutlast LIST &optional (N 1)
[Package    ]: lisp
[Seealso    ]: butlast
[File       ]: list.l
[Section    ]: リスト
[Description]: 
リストの最後のN要素分を除いたリストを返します。元のLISTも変更されます。

使用例：
  ;;; 最後の要素を取り除きます。
  (setq foo '(1 2 3))
  => (1 2 3)
  (nbutlast foo)
  => (1 2)
  foo
  => (1 2)


■nconc
[Type       ]: Function
[Arguments  ]: nconc &rest LISTS
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: リスト
[Description]: 
複数のリストを引数にとってそれらを結合したリストを返します。
引数は変更されます。

使用例：
  ;;; リストをくっつけてみる。
  (setq x '(a b c))
  (setq y '(d e f))
  (nconc x y)
  => (a b c d e f) 
  x
  => (a b c d e f)
  y
  => (d e f)


■need-buffer-save-p
[Type       ]: Function
[Arguments  ]: need-buffer-save-p BUFFER
[Package    ]: editor
[Seealso    ]: need-not-save
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
バッファが保存が必要かを返します。
need-not-saveと関連しています。

  t     バッファの保存が必要
  nil   バッファの保存が必要ではない


■need-not-save
[Type       ]: BufferLocal
[Package    ]: editor
[Seealso    ]: need-buffer-save-p
[Section    ]: 変数と定数
[Description]: 
保存する必要があるかどうかを設定します。
個々のバッファ毎や特定のモードだけしたくないのであれば、使用例の様にロー
カル変数にします。例えば、*scratch*の様に書き捨てたりするバッファでは、
保存の必要はないので、tになっています。

  t     保存の必要はない
  nil   保存する

使用例：
  ;;; 現在のバッファは保存の必要はなし。
  (make-local-variable 'need-not-save)
  => t
  (setq need-not-save t)
  => t


■negative-argument
[Type       ]: Function
[Arguments  ]: negative-argument RAW &optional ARG
[Package    ]: editor
[File       ]: cmds.l
[Section    ]: 関数
[Description]: 
後に続くコマンドに負の前置引数を渡します。[ESC -]


■new-pseudo-frame
[Type       ]: Function
[Arguments  ]: new-pseudo-frame NAME &optional SAVE-P SELECTED-FN DELETED-FN
[Package    ]: editor
[Seealso    ]: フレームの概要 , select-pseudo-frame , delete-pseudo-frame , *select-pseudo-frame-hook*
[File       ]: pframe.l
[Section    ]: ウィンドウ
[Description]: 
新しいフレームを作って返します。[C-x 6 2]

  NAME        : フレームの名前
  SAVE-P      : セッション保存時にこのフレームを保存するかどうか
  SELECTED-FN : このフレームを選択した時に実行される関数
  DELETED-FN  : このフレームを削除した時に実行される関数

フレームは構造体として定義されており、これらの引数はそれぞれ
同名のスロットに設定されます。

インタラクティブに呼んだ場合 NAME は自動的に割り振られ、SAVE-P は t に設定されます。
前置引数をつけて呼べば NAME を対話的に入力できます。


■newline
[Type       ]: Function
[Arguments  ]: newline &optional (ARG 1)
[Package    ]: editor
[File       ]: cmds.l
[Section    ]: テキスト
[Description]: 
改行を挿入します。[RET]


■newline-and-indent
[Type       ]: Function
[Arguments  ]: newline-and-indent &optional (ARG 1)
[Package    ]: editor
[File       ]: cmds.l
[Section    ]: ポジション
[Description]: 
改行後、文字が存在する直前の行と同じ桁数だけインデントをします。
モードに依存したインデントコマンドは使用しません。


■next-buffer
[Type       ]: Function
[Arguments  ]: next-buffer
[Package    ]: editor
[Seealso    ]: previous-buffer , *next-buffer-in-tab-order*
[File       ]: buffer.l
[Section    ]: バッファ
[Description]: 
次のバッファに切替えます。エディタ上で現在選択されているウィンドウの
中のバッファが変わるだけです。

バッファタブの順番にそってnext-bufferしたいのならば、
*next-buffer-in-tab-order*を参照して下さい。


■next-error
[Type       ]: Function
[Arguments  ]: next-error &optional ARG
[Package    ]: editor
[Seealso    ]: *error-regexp-list* , first-error
[File       ]: errors.l
[Section    ]: エラー
[Description]: 
次のエラーの該当行にジャンプします。


■next-line
[Type       ]: Function
[Arguments  ]: next-line &optional (N 1)
[Package    ]: editor
[Seealso    ]: next-virtual-line
[File       ]: cmds.l
[Section    ]: ポジション
[Description]: 
N行後の物理行に移動します。
  t    最終行以外の場合
  nil  最終行の場合


■next-line-add-newlines
[Type       ]: Variable
[Package    ]: editor
[Section    ]: ポジション
[Description]: 
バッファの最後尾でnext-line系の移動をしたときの動作を設定します。

  t   空行を挿入します
  nil 何もしません

使用例：
  (setq next-line-add-newlines t)


■next-page
[Type       ]: Function
[Arguments  ]: next-page &optional (ARG 1)
[Package    ]: editor
[Seealso    ]: previous-page , *page-scroll-half-window* , *page-scroll-keep-window-position*
[File       ]: page.l
[Section    ]: ウィンドウ
[Description]: 
指定ページ分画面を下スクロールします。
*page-scroll-half-window* が non nil なら半画面ずつスクロールします。


■next-pseudo-frame
[Type       ]: Function
[Arguments  ]: next-pseudo-frame
[Package    ]: editor
[Seealso    ]: previous-pseudo-frame , other-pseudo-frame
[Section    ]: ウィンドウ
[Description]: 
other-pseudo-frame の別名です。


■next-virtual-line
[Type       ]: Function
[Arguments  ]: next-virtual-line &optional (N 1)
[Package    ]: editor
[Seealso    ]: next-line
[File       ]: cmds.l
[Section    ]: ポジション
[Description]: 
N行後の表示行に移動します。
  t    最終行以外の場合
  nil  最終行の場合


■next-window
[Type       ]: Function
[Arguments  ]: next-window WINDOW &optional MINIBUF
[Package    ]: editor
[Seealso    ]: previous-window
[File       ]: builtin.l
[Section    ]: ウィンドウ
[Description]: 
WINDOW の次のウィンドウを返します。

  MINIBUF : ミニバッファウィンドウを候補に入れるか
       nil    無視する
   non-nil    候補に入れる


■next-word
[Type       ]: Function
[Arguments  ]: next-word &optional (ARG 1)
[Package    ]: editor
[Seealso    ]: forward-word
[File       ]: cmds.l
[Section    ]: ポジション
[Description]: 
カーソルを前方の単語の先頭に移動します。


■nil
[Type       ]: Variable
[Package    ]: lisp
[Seealso    ]: t
[Section    ]: 変数と定数
[Description]: 
偽を表す定数です。


■nintersection
[Type       ]: Function
[Arguments  ]: nintersection LIST1 LIST2 &rest REST &key :test :test-not :key
[Package    ]: lisp
[Seealso    ]: intersection
[File       ]: list.l
[Section    ]: リスト
[Description]: 
LIST1 と LIST2 の両方に含まれる要素のリストを作って返します。
intersection と違い LIST1 は変更されます。

使用例:
  (setq x '(1 3 5 7 9))
  => (1 3 5 7 9)
  (setq y '(2 3 5 7 11))
  => (2 3 5 7 11)
  (nintersection x y)
  => (3 5 7)
  x
  => (1 3 5 7)
  y
  => (2 3 5 7 11)


■ninth
[Type       ]: Function
[Arguments  ]: ninth X
[Package    ]: lisp
[Seealso    ]: nth
[File       ]: list.l
[Section    ]: リスト
[Description]: 
list の 9 番目の要素を返します。

  (ninth X) = (nth 8 X)

使用例：
  (ninth '(1 2 3 4 5 6 7 8 9 0))
  => 9


■no-or-yes-p
[Type       ]: Function
[Arguments  ]: no-or-yes-p FMT &rest ARGS
[Package    ]: lisp
[Seealso    ]: yes-or-no-p , y-or-n-p , yes-no-or-cancel-p
[File       ]: misc.l
[Section    ]: ダイアログ
[Description]: 
「はい」「いいえ」のボタン付メッセージボックスを表示します。
デフォルトは「いいえ」です。

  t     「はい」を選択
  nil   「いいえ」を選択

使用例：
  ;;; ダイアログを表示して選択させる。
  (no-or-yes-p "foo")
  => t          ; 「はい」を選択


■not
[Type       ]: Function
[Arguments  ]: not X
[Package    ]: lisp
[File       ]: evalmacs.l
[Section    ]: その他
[Description]: 
否定を返します。
non nilならばnilを返し、nilならばtを返します。機能としてはnullと同じです。


■not-modified
[Type       ]: Function
[Arguments  ]: not-modified
[Package    ]: editor
[Seealso    ]: set-buffer-modified-p
[File       ]: buffer.l
[Section    ]: バッファ
[Description]: 
バッファの変更フラグをクリアします。
つまり変更されてないことになります。
(set-buffer-modified-p nil)のinteractive版です。


■notany
[Type       ]: Function
[Arguments  ]: not-any PREDICATE SEQUENCE &rest MORE-SEQUENCES
[Package    ]: lisp
[Seealso    ]: notevery , some
[File       ]: sequence.l
[Section    ]: シーケンス
[Description]: 
SEQUENCEの先頭の要素から順番にPREDICATEを適用していき、PREDICATEが
非nilな値を返すと、 nil をすぐに返します。
PREDICATEを満たす要素が見つからない時は t を返します。

MORE-SEQUNCESが与えられた時、SEQUENCEの中で最も短いものの終わりまで実行されます。


■notevery
[Type       ]: Function
[Arguments  ]: notevery PREDICATE SEQUENCE &rest MORE-SEQUENCES
[Package    ]: lisp
[Seealso    ]: notany , every
[File       ]: sequence.l
[Section    ]: シーケンス
[Description]: 
SEQUENCEの先頭の要素から順番にPREDICATEを適用していき、PREDICATEが
nil を返すと、t をすぐに返します。
全ての要素がPREDICATEを満たす場合、 nil を返します。

MORE-SEQUNCESが与えられた時、SEQUENCEの中で最も短いものの終わりまで実行されます。


■nreconc
[Type       ]: Function
[Arguments  ]: nreconc X Y
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: リスト
[Description]: 
X を反転させて Y をくっつけます。

  (nreconc x y) == (nconc (nreverse x) y)

nreconcの方が効率が良いようです。


■nreverse
[Type       ]: Function
[Arguments  ]: nreverse SEQUENCE
[Package    ]: lisp
[Seealso    ]: reverse
[File       ]: builtin.l
[Section    ]: シーケンス
[Description]: 
SEQUENCEを逆順にした新しいSEQUENCEを作成して返します。元のsequenceは破壊
されます。

使用例：
  (setq lst '(a b c))
  => (a b c)
  (nreverse lst)
  => (c b a)
  lst
  => (a)


■nset-difference
[Type       ]: Function
[Arguments  ]: nset-difference LIST1 LIST2 &rest REST &key :test :test-not :key
[Package    ]: lisp
[Seealso    ]: set-difference
[File       ]: list.l
[Section    ]: リスト
[Description]: 
LIST1 から LIST2 にも含まれる要素を除き、そのリストを返します。
set-difference と違い LIST1 は変更されます。

使用例:
  (setq x '(1 3 5 7 9))
  => (1 3 5 7 9)
  (setq y '(2 3 7))
  => (2 3 7)
  (nset-difference x y)
  => (1 5 9)
  x
  => (1 5 9)


■nset-exclusive-or
[Type       ]: Function
[Arguments  ]: nset-exclusive-or LIST1 LIST2 &rest REST &key :test :test-not :key
[Package    ]: lisp
[Seealso    ]: set-exclusive-or
[File       ]: list.l
[Section    ]: リスト
[Description]: 
LIST1 と LIST2 のいずれか一方にのみ含まれる要素のリストを作って返します。
set-exclusive-or と違い LIST2 は変更されます。

使用例:
  (setq x '(1 3 5 7 9))
  => (1 3 5 7 9)
  (setq y '(2 3 5 7 11))
  => (2 3 5 7 11)
  (nset-exclusive-or x y)
  => (9 1 2 11)
  x
  => (1 3 5 7 9)
  y
  => (2 11)


■nstring-capitalize
[Type       ]: Function
[Arguments  ]: nstring-capitalize STRING &key :start :end
[Package    ]: lisp
[Seealso    ]: string-capitalize
[File       ]: builtin.l
[Section    ]: 文字列
[Description]: 
STRINGの内部の単語の先頭を大文字に、それ以外を小文字にします。
元のSTRINGは変更されます。

使用例：  
  (setq foo "tHis iS a pEn.")
  => "tHis iS a pEn."
  (nstring-capitalize foo)
  => "This Is A Pen."
  foo
  => "This Is A Pen."


■nstring-downcase
[Type       ]: Function
[Arguments  ]: nstring-downcase STRING &key :start :end
[Package    ]: lisp
[Seealso    ]: string-downcase
[File       ]: builtin.l
[Section    ]: 文字列
[Description]: 
STRINGを小文字にした文字列を返します。元のSTRINGは変更されます。

使用例：  
  (setq foo "XyZzY")
  => "XyZzY"
  (nstring-downcase foo)
  => "xyzzy"
  foo
  => "xyzzy"


■nstring-upcase
[Type       ]: Function
[Arguments  ]: nstring-upcase STRING &key :start :end
[Package    ]: lisp
[Seealso    ]: string-upcase
[File       ]: builtin.l
[Section    ]: 文字列
[Description]: 
STRINGを大文字にした文字列を返します。元のSTRINGは変更されます。

使用例：
  (setq foo "xyzzy")
  => "xyzzy"
  (nstring-upcase foo)
  => "XYZZY"
  foo
  => "XYZZY"


■nsublis
[Type       ]: Function
[Arguments  ]: nsublis ALIST TREE &key :test :test-not :key
[Package    ]: lisp
[Seealso    ]: sublis , nsubst
[File       ]: builtin.l
[Section    ]: リスト
[Description]: 
TREE の中で ALIST の :key との :test を満たすものを VALUE に置き換えます。
元の TREE は置き換えられます。

使用例：
  ;;; fooの変換テーブルの内容に基づいてbarを変換します。
  (setq foo '((1 . #\a) (2 . #\b) (3 . #\c)))
  => ((1 . #\a) (2 . #\b) (3 . #\c))
  (setq bar '(1 (2 3) ((4 5 6) (7 8 9))))
  => (1 (2 3) ((4 5 6) (7 8 9)))
  (nsublis foo bar)
  => (#\a (#\b #\c) ((4 5 6) (7 8 9)))
  bar
  => (#\a (#\b #\c) ((4 5 6) (7 8 9)))


■nsubst
[Type       ]: Function
[Arguments  ]: nsubst NEW OLD TREE &key :test :test-not :key
[Package    ]: lisp
[Seealso    ]: subst , nsublis , nsubst-if , nsubst-if-not
[File       ]: builtin.l
[Section    ]: リスト
[Description]: 
TREEの中でOLDをNEWに置き換えたTREEを返します。
元のTREEは置き換えられます。

使用例：
  ;;; 階層のあるツリーをsubstしてみる。aはそのまま
  (setq a '((1 2) ((1 3) (1 4))))       => ((1 2) ((1 3) (1 4)))
  (nsubst 5 1 a)                        => ((5 2) ((5 3) (5 4)))
  a                                     => ((5 2) ((5 3) (5 4)))


■nsubst-if
[Type       ]: Function
[Arguments  ]: nsubst-if NEW TEST TREE &key :key
[Package    ]: lisp
[Seealso    ]: subst-if , nsubst-if-not , nsubst
[File       ]: builtin.l
[Section    ]: リスト
[Description]: 
TREEの中でTESTを満たすものがあればNEWに置き換えたものを返します。
TREEが変更される点を除いてsubst-ifと同じです。

  NEW  : 置き換える要素
  TEST : 置き換えるかどうかを判定するテスト
         non-nilを返したら置き換えます。
  TREE : 対象のツリー

TESTの引数についてはsubst-ifを参照して下さい。

使用例：
  ;;; 適当なツリーを用意して、その要素が奇数ならば0に置き換える。
  (setq a '((1 2) ((1 3) (1 (1 3)))))
  => ((1 2) ((1 3) (1 (1 3))))
  (nsubst-if 0 #'(lambda (x) (and (integerp x) (oddp x))) a)
  => ((0 2) ((0 0) (0 (0 0))))
  a
  => ((0 2) ((0 0) (0 (0 0))))


■nsubst-if-not
[Type       ]: Function
[Arguments  ]: nsubst-if-not NEW TEST TREE &key :key
[Package    ]: lisp
[Seealso    ]: subst-if , nsubst-if , nsubst
[File       ]: builtin.l
[Section    ]: リスト
[Description]: 
TREEの中でTESTを満たさないものがあればNEWに置き換えたものを返します。
TESTが変更される点を除いてsubst-if-notと同じです。

  NEW  : 置き換える要素
  TEST : 置き換えるかどうかを判定するテスト
         nilを返したら置き換えます。
  TREE : 対象のツリー

TESTの引数についてはsubst-ifを参照して下さい。

使用例：
  ;;; 適当なツリーを用意して、数字以外のものがあれば0に変換する。
  (setq a '((123 "abc") '(456 "123") (789 #\a)))
  => ((123 "abc") '(456 "123") (789 #\a))
  (nsubst-if-not 0 #'(lambda (x) (or (listp x) (integerp x))) a)
  => ((123 0) (0 (456 0)) (789 0))
  a
  => ((123 0) (0 (456 0)) (789 0))


■nsubstitute
[Type       ]: Function
[Arguments  ]: nsubstitute NEWITEM OLDITEM SEQUENCE &key :from-end :test :test-not :start :end :count :key
[Package    ]: lisp
[Seealso    ]: nsubst , nsubstitute , nsubstitute-if , nsubstitute-if-not , substitute , nsbulis
[File       ]: sequence.l
[Section    ]: シーケンス
[Description]: 
SEQUENCE に対して OLDITEM との :test を満足する要素を NEWITEM に置き換えた列を返します。
元の SEQUENCE は変更されます。

  :test     : テストを行う2項演算子
  :start    : 開始位置。デフォルトは0で非負の整数
  :end      : 終了位置。デフォルトはnilで、nilの場合は列の長さを指定した
              場合と等しい動作。
  :count    : 置き換える最大の回数。
  :from-end : nil ならば先頭から、non-nil で末尾から置換を行う。 :count
              が与えられた時のみ意味を持つ。


■nsubstitute-if
[Type       ]: Function
[Arguments  ]: nsubstitute-if NEWITEM TEST SEQUENCE &key :from-end :start :end :count :key
[Package    ]: lisp
[Seealso    ]: nsubst-if , nsubstitute , nsubstitute-if-not , substitute-if
[File       ]: sequence.l
[Section    ]: シーケンス
[Description]: 
SEQUENCEに対してTESTを満足する要素をNEWITEMに置き換えた列を返します。
元のSEQUENCEは変更されます。

  TEST      : テストを行う単項演算子
  :start    : 開始位置。デフォルトは0で非負の整数
  :end      : 終了位置。デフォルトはnilで、nilの場合は列の長さを指定した
              場合と等しい動作。
  :count    : 置き換える最大の回数。
  :from-end : nil ならば先頭から、 non-nil で末尾から置換を行う。 :count
              が与えられた時のみ意味を持つ。


■nsubstitute-if-not
[Type       ]: Function
[Arguments  ]: nsubstitute-if-not NEWITEM TEST SEQUENCE &key :from-end :start :end :count :key
[Package    ]: lisp
[Seealso    ]: nsubst-if-not , nsubstitute , nsubstitute-if , substitute-if-not
[File       ]: sequence.l
[Section    ]: シーケンス
[Description]: 
SEQUENCEに対してTESTを満足しない要素をNEWITEMに置き換えた列を返します。
元のSEQUENCEは変更されます。

  TEST      : テストを行う単項演算子
  :start    : 開始位置。デフォルトは0で非負の整数
  :end      : 終了位置。デフォルトはnilで、nilの場合は列の長さを指定した
              場合と等しい動作。
  :count    : 置き換える最大の回数。
  :from-end : nil ならば先頭から、 non-nil で末尾から置換を行う。 :count
              が与えられた時のみ意味を持つ。


■nth
[Type       ]: Function
[Arguments  ]: nth N LIST
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: リスト
[Description]: 
リストの N 番目の要素を返します。

  N    : リストのインデックスを指定します。0を基底とします。
  LIST : 要素を返すリストです。

N がリストの長さを越えていれば nil を返します。 N が負数であればエラーを
返します。

  (nth n x) == (car (nthcdr n x))

使用例：
  (nth 2 '(1 2 3 4))
  => 3
  (nth 10 '(1 2 3 4))
  => nil
  (nth -3 '(1 2 3 4))
  => 範囲外の値です: -3


■nthcdr
[Type       ]: Function
[Arguments  ]: nthcdr N LIST
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: リスト
[Description]: 
リストの N 番目の cdr を返します。

  N    : リストのインデックスを指定します。0を基底とします。
  LIST : 要素を返すリストです。

N がリストの長さを越えていれば nil を返します。 N が負数であればエラーを
返します。

使用例：
  (nthcdr 1 '(1 2 3 4))
  => (2 3 4)
  (nthcdr 10 '(1 2 3 4))
  => nil
  (nthcdr -3 '(1 2 3 4))
  => 範囲外の値です: -3


■null
[Type       ]: Function
[Arguments  ]: null OBJECT
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
OBJECTが()ならばt、それ以外ならnilを返します。

  (null x) == (typep x 'null) == (eq x '())


■number-of-function-bar-labels
[Type       ]: Function
[Arguments  ]: number-of-function-bar-labels
[Package    ]: editor
[Seealso    ]: set-number-of-function-bar-labels
[File       ]: builtin.l
[Section    ]: その他
[Description]: 
ファンクションバーのラベルの数を返します。非表示の場合でも数値を返します。


■numberp
[Type       ]: Function
[Arguments  ]: numberp OBJECT
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
OBJECTが数値ならばt、それ以外ならnilを返します。

  (numberp x) == (typep x 'number)


■numerator
[Type       ]: Function
[Arguments  ]: numerator RATIONAL
[Package    ]: lisp
[Seealso    ]: denominator
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
分数の分子を返します。


■nunion
[Type       ]: Function
[Arguments  ]: nunion LIST1 LIST2 &rest REST &key :test :test-not :key
[Package    ]: lisp
[Seealso    ]: union
[File       ]: list.l
[Section    ]: リスト
[Description]: 
LIST1 と LIST2 を併せたリストを作って返します。
union と違い LIST1 は変更されます。

使用例:
  (setq x '(1 3 5 7 9))
  => (1 3 5 7 9)
  (setq y '(2 3 5 7 11))
  => (2 3 5 7 11)
  (nunion x y)
  => (1 9 2 3 5 7 11)
  x
  => (1 9 2 3 5 7 11)
  y
  => (2 3 5 7 11)


■oddp
[Type       ]: Function
[Arguments  ]: oddp INTEGER
[Package    ]: lisp
[Seealso    ]: evenp
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
INTEGERが奇数ならばt、そうでなければnilを返します。

使用例：  
  (oddp 1)
  => t
  (oddp 0)
  => nil
  (oddp -35)
  => t


■OLEオートメーションの使用例
[Type       ]: Tips
[Section    ]: その他
[Description]: 
; 意味もなく全部のシートに「東西南北」を書き込む
(setq application (ole-create-object "Excel.Application"))
(ole-putprop application 'visible 1)
(setq workbook (ole-method (ole-getprop application 'Workbooks) 'Add))
(setq numbers-of-worksheets
      (ole-getprop
       (ole-getprop workbook 'worksheets)
       'count))
(setq worksheet-index 1)
(while (<= worksheet-index numbers-of-worksheets)
  (setq worksheet
 (ole-getprop workbook 'Worksheets worksheet-index))
  (ole-putprop (ole-method worksheet 'Range "A1:D1")
        'value #("東" "西" "南" "北"))
  (setq worksheet-index (+ worksheet-index 1)))


こんな小細工をしてみたんですけどどうでしょう?

(defmacro $ (obj prop &rest args)
  `(ole-method ,obj ',prop ,@args))

(defsetf $ (obj prop &rest args) (x)
  `(progn
     (ole-putprop ,obj ',prop ,x ,@args)
     ,x))

(let (app workbook worksheet range)
  (setq app (ole-create-object "Excel.Application"))
  (setf ($ app Visible) t)
  (setq workbook ($ ($ app Workbooks) Add))
  (setq worksheet ($ workbook Worksheets 1))
  (setf ($ ($ worksheet Range "A1:D1") Value) '("North" "South" "East" "West"))
  (setf ($ ($ worksheet Range "A2:B2") Value) #(5.2 10))
  (setf ($ ($ worksheet Range "C2") Value) 8)
  (setf ($ ($ worksheet Range "D2") Value) 20)

  (setq range ($ worksheet Range "A1:D2"))
  ($ range Select)
  ($ ($ workbook Charts) Add)
  (sit-for 5)

  (setf ($ workbook saved) t)
  ($ ($ app ActiveWorkbook) Close 0)
  ($ app Quit))


■open
[Type       ]: Function
[Arguments  ]: open FILENAME &key :direction :if-exists :if-does-not-exist :encoding :share
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 入出力
[Description]: 
ファイルへのストリームを作成して返します。ストリームのクローズには close 
を使いますが、 with-open-stream を使えば close の手間が省ける上に安全です。

  FILENAME           : ストリームを作成するファイル名を指定します。
  :direction         : ストリームの入出力の方向を指定します。
        :input          入力（省略時）
        :output         出力
        :io             入出力
        :probe          ファイルテスト？
                        戻り値のストリームは無効になっています。
  :if-exists         : ファイルが存在する場合の動作を指定します。
        :error          エラーを出力します。（省略時）
        :skip           エラーは出力せず、nilを返します。
        :append         既存ファイルに追加します。
                        ストリームの位置はファイル終端になります。
        :overwrite      上書きします。
        :new-version    ファイルを作成します。
                        既にあれば上書きされます。
        ---- 以下詳細不明 ----
        :supersede      更新？
        :rename         リネーム用にストリームを開く？
        :rename-and-delete  リネーム用にストリームを開く？
  :if-does-not-exist : ファイルが存在しない場合の動作を指定します。
        :error          エラーを出力します。（省略時）
        :create         エラーは出力せず、入力ファイルを作成します。
  :encoding          : エンコーディングのモードを指定します。
        :binary         バイナリモードです。
        :text           テキストモードです。（省略時は:text）
                        改行がコードが*default-fileio-encoding*に依存します。
        :canonical      :text と同じ意味になります。
        :raw            改行コードの扱いが、LF のみになります。
                        それ以外は :text と同じです。
  :share             : ファイルの共有モードを指定します。
        省略時　　　　　:direction が :input または :probe なら :read に、
                        それ以外は共有不可になります。
        :read           読み取りの共有が可能になります。
        :write          書き込みの共有が可能になります。
        :read-write     読み書きの共有が可能になります。

使用例：
  ;;; ストリーム経由でファイルに書き出してみる。
  (setq foo (open "abc.txt" :direction :output))
  => #<file-output stream: C:/applications/xyzzy/abc.txt>
  (princ "test" foo)
  => "test"
  (close foo)
  => t


■open-filer
[Type       ]: Function
[Arguments  ]: open-filer
[Package    ]: editor
[Seealso    ]: filer
[File       ]: filer.l
[Section    ]: ファイラ
[Description]: 
ファイラを開きます。[C-c C-f]
filerのinteractive版です。


■open-line
[Type       ]: Function
[Arguments  ]: open-line &optional (ARG 1)
[Package    ]: editor
[File       ]: cmds.l
[Section    ]: テキスト
[Description]: 
カーソル位置を変えないで改行を挿入します。[C-o]


■open-network-stream
[Type       ]: Function
[Arguments  ]: open-network-stream BUFFER HOSTNAME SERVICE &key :incode :outcode :eol-code
[Package    ]: editor
[Seealso    ]: connect
[File       ]: builtin.l
[Section    ]: システム
[Description]: 
ホストのポートとのTCP接続を開きます。
成功すれば接続をBUFFERのサブプロセスとして返します。

使用例：
  ;;; http://www.yahoo.co.jp/を取得してみる。
  (progn
    (defun filter (proc in) (insert in))
    (setq proc (open-network-stream (selected-buffer) "www.yahoo.co.jp" 80))
    (process-send-string proc "GET / HTTP/1.0\n\n")
    (set-process-filter proc 'filter))
  => HTTP/1.1 200 OK
     Server: ...


■open-rectangle
[Type       ]: Function
[Arguments  ]: open-rectangle P1 P2
[Package    ]: editor
[Seealso    ]: clear-rectangle , open-rectangle-selection , operate-on-rectangle
[File       ]: rectangl.l
[Section    ]: リージョン
[Description]: 
P1 と P2 で指定される矩形領域に #\SPC を挿入します。


■open-rectangle-selection
[Type       ]: Function
[Arguments  ]: open-rectangle-selection
[Package    ]: editor
[Seealso    ]: clear-rectangle-selection , open-rectangle , operate-on-rectangle-selection
[File       ]: select.l
[Section    ]: リージョン
[Description]: 
矩形選択されたセレクションの領域に #\SPC を挿入します。


■operate-on-rectangle
[Type       ]: Function
[Arguments  ]: operate-on-rectangle P1 P2 C1 C2 &key :copy :delete :clear :open :string
[Package    ]: editor
[Seealso    ]: operate-on-rectangle-selection
[File       ]: rectangl.l
[Section    ]: リージョン
[Description]: 
P1 と P2 で指定されるリージョン中の、 C1 と C2 で定まる矩形領域に対し
てキーワードで指定された操作を行います。

  :copy     コピーする
  :delete   削除する
  :clear    #\SPC で上書き
  :open     #\SPC を挿入
  :string   削除して各行に STRING を挿入

C1, C2 には nil を指定することもできます。この場合、リージョンの開始位
置と終了位置の表示桁が使われます。

-rectangle 系のコマンドの多くはこれを用いて実装されています。


矩形についての補足：
  例えば次の図で / がリージョンの場合 * の部分が操作の対象となります。
         C1             C2                     C1             C2
  -------│-------------│--------      -------│-------------│--------
  -------│------/////////////////      -------│------*******│--------
  ////////////////////////////////      -------│*************│--------
  ////////////////////////////////      -------│*************│--------
  ////////////////////////////////      -------│*************│--------
  /////////////////////////-------      -------│*************│--------
  -------│-------------│--------      -------│-------------│--------
  
  C1, C2 を明示的に指定することはあまりなく、次のいずれかの形になる場合がほとんどでしょう。
  --------------------      --------------------
  ------------////////      ------********//////
  /////*******////////      //////********//////
  /////*******////////      //////********//////
  /////*******////////      //////********//////
  /////*******////////      //////********//////
  /////---------------      //////********------
  --------------------      --------------------


■operate-on-rectangle-selection
[Type       ]: Function
[Arguments  ]: operate-on-rectangle-selection &key :copy :delete :clear :open :string
[Package    ]: editor
[Seealso    ]: operate-on-rectangle , copy-rectangle-selection , kill-rectangle-selection , delete-rectangle-selection , clear-rectangle-selection , open-rectangle-selection , string-rectangle-selection , *dont-clear-selection*
[File       ]: select.l
[Section    ]: リージョン
[Description]: 
矩形選択されたセレクションの領域に対してキーワードで指定された操作を行
います。

  :copy     コピーする
  :delete   削除する
  :clear    #\SPC で上書き
  :open     #\SPC を挿入
  :string   削除して各行に STRING を挿入


■or
[Type       ]: Macro
[Arguments  ]: or {FORM}*
[Package    ]: lisp
[Seealso    ]: and
[File       ]: evalmacs.l
[Section    ]: 制御構造
[Description]: 
フォームがnilの間だけ順番に評価します。
フォームが一つでもnilでなければ、そこで評価を中断してフォームの値を返し
て終了します。全てのフォームがnilならば、nilを返します。

  ;;; exp1 がnilなら、そこで実行を中止しnilを返す。
  ;;; exp2 がnilなら、そこで実行を中止しnilを返す。
  ;;; ...
  ;;; 最後に実行したexpの値を返す。
  (or exp1 exp2 exp3 ...)

ルールに従って一つだけ値を定める場合に向いていると思います。

  (or (get-buffer-file-name) ; バッファにファイル名があればそれを使う。
      *foo*                  ; ファイル名がなければ、変数*foo*の値を使う。
      (read-string "foo: ")) ; *foo*にも値が無ければ入力してもらう。


■os-build-number
[Type       ]: Function
[Arguments  ]: os-build-number
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: システム
[Description]: 
Windows NT 4.00.13811 + Service Pack 3 の場合

使用例：  
  (os-build-number)
  => 1381


■os-csd-version
[Type       ]: Function
[Arguments  ]: os-csd-version
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: システム
[Description]: 
Windows NT 4.00.1381 + Service Pack 3 の場合

使用例：
  (os-csd-version)
  => "Service Pack 3"


■os-major-version
[Type       ]: Function
[Arguments  ]: os-major-version
[Package    ]: editor
[Seealso    ]: machine-name
[File       ]: builtin.l
[Section    ]: システム
[Description]: 
OSのメジャーバージョンを返します。

使用例：
  (os-major-version)
  => 4


■os-minor-version
[Type       ]: Function
[Arguments  ]: os-minor-version
[Package    ]: editor
[Seealso    ]: machine-name
[File       ]: builtin.l
[Section    ]: システム
[Description]: 
OSのマイナーバージョンを返します。

使用例：
  (os-minor-version)
  => 0


■os-platform
[Type       ]: Function
[Arguments  ]: os-platform
[Package    ]: editor
[Seealso    ]: machine-name , si:getenv
[File       ]: builtin.l
[Section    ]: システム
[Description]: 
OSの種類を返します。OSが95とNTで動作を変えたいときなどに使います。返され
る値は文字列ではなくシンボルです。

参考：
  OS            シンボル
  ----          ----
  Windows???    win32s
  Windows95     windows-95
  Windows98     windows-98
  WindowsMe     windows-me
  WindowsNT     windows-nt
  Windows2000   windows-2000
  WindowsXP     windows-xp

使用例：
  (os-platform)
  => windows-nt


■other-buffer
[Type       ]: Function
[Arguments  ]: other-buffer &optional BUFFER
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
最近(?)表示されていたバッファに切替えます。


■other-pseudo-frame
[Type       ]: Function
[Arguments  ]: other-pseudo-frame
[Package    ]: editor
[Seealso    ]: previous-pseudo-frame , next-pseudo-frame
[File       ]: pframe.l
[Section    ]: ウィンドウ
[Description]: 
次のフレームに移動します。[C-x 6 o]


■other-window
[Type       ]: Function
[Arguments  ]: other-window &optional (ARG 1 F) NO-ERROR
[Package    ]: editor
[File       ]: window.l
[Section    ]: ウィンドウ
[Description]: 
分割されたウィンドウの中を移動します。

  ARG      : ARG番目のウィンドウに移動します。
             負数であれば、ARG番前のウィンドウに移動します。
  NO-ERROR : (count-windows)以上の数値を指定した場合の動作を制御します。
        nil     (count-windows)以上の数値を指定するとエラーを発生します。
        t       (count-windows)以上の数値を指定してもtを返す。


■overwrite-char
[Type       ]: Function
[Arguments  ]: overwrite-char C &optional (ARG 1)
[Package    ]: editor
[File       ]: cmds.l
[Section    ]: テキスト
[Description]: 
文字を上書きします。

使用例：
  ;;; 半角空白で上書きする。
  (overwrite-char #\SPC)
  => t


■overwrite-mode
[Type       ]: Function
[Arguments  ]: overwrite-mode &optional (ARG () SV)
[Package    ]: editor
[Seealso    ]: toggle-over
[File       ]: cmds.l
[Section    ]: モード
[Description]: 
上書き用マイナーモードを制御します。 toggle-over と同じです。


■overwrite-rectangle
[Type       ]: Function
[Arguments  ]: overwrite-rectangle
[Package    ]: editor
[File       ]: rectangl.l
[Section    ]: リージョン
[Description]: 
コピーしている矩形を貼り付けます。既存のテキストに上書きされます。


■package-name
[Type       ]: Function
[Arguments  ]: package-name PACKAGE
[Package    ]: lisp
[Seealso    ]: package-nicknames , find-package
[File       ]: builtin.l
[Section    ]: パッケージ
[Description]: 
パッケージの名称を取得します。

使用例：
  (package-name (find-package "ed"))
  => "editor"


■packagep
[Type       ]: Function
[Arguments  ]: packagep OBJECT
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
OBJECTがpackageならt、それ以外ならnilを返します。

使用例：
  ;;; 指定された文字列のパッケージがあるかを調べる。
  (setq pkg (find-package "win32"))     => nil
  (packagep pkg)                        => nil
  (setq pkg (find-package "winapi"))    => #<package: winapi>
  (packagep pkg)                        => t


■pairlis
[Type       ]: Function
[Arguments  ]: pairlis KEYS DATA &optional A-LIST
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: リスト
[Description]: 
二つのリスト KEYS と DATA から要素を一つずつ組み合わせた連想リストを作って返します。
A-LIST が与えられればそれに加えて返します。

  '(1 2 3 4 5) ─┬→ '((5 . e) (4 . d) (3 . c) (2 . b) (1 . a))
  '(a b c d e) ─┘

使用例：
  (pairlis '(one two) '(1 2) '((three . 3)))
  => ((two . 2) (one . 1) (three . 3))


■parse-integer
[Type       ]: Function
[Arguments  ]: parse-integer STRING &key :start :end :radix :junk-allowed
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 入出力
[Description]: 
文字列を整数に変換して返します。数値そのものと、元の文字列の有効な桁数を
多値で返します。

--- 原文 ---
Description: examines the characters of string specified by :start and 
:end, and attempts to parse an integer ignoring whitespace characters. 
The keyword :radix defines the base to which the integer is to be parsed 
and must be in the range 2 to 36. If :junk-allowed is non-nil, the first 
value returned is the integer parsed or nil if no acceptable digits were 
found. If :junk-allowed is nil, an error is signaled if the substring is 
not an integer in the appropriate base, with optional sign. Note that 
radix specifiers #o, #b, #x and #nR are not recognized, nor is the decimal 
point.

--- 意訳 ---
parse-integer は :start と :end で示された文字の並びをチェックし、空白
文字を無視して整数の読み込みを試みます。 :radix キーワードは数値が読み込
まれるべき基数を定義します。基数は 2 から 36 までの範囲になければなりま
せん。もし、 :junk-allowed が nil 以外で読み込めない文字があれば nil と
なります。もし、 :junk-allowed が nil で読み込めない文字があればエラーを
発生します。なお、基数として#o #b #x 及び #nR は認識できないので注意する
こと。

# となっていますが、空白は入ってはだめみたい。

使用例：
  (parse-integer "123")
  => 123
     3
  (parse-integer "123+23")
  => 不正な数値の形式です: "123+23"
  (parse-integer "123+23" :junk-allowed t)
  => nil
     3
  (parse-integer "a" :radix 16)
  => 10


■parse-point-syntax
[Type       ]: Function
[Arguments  ]: parse-point-syntax &optional POINT
[Package    ]: editor
[Seealso    ]: syntax-table
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
指定された位置のシンタックスを返します。
  :string  set-syntax-stringで指定されたキャラクタに囲まれた領域           
  :comment set-syntax-comment-column
           set-syntax-start-c++-comment
           set-syntax-end-c++-comment
           set-syntax-start-comment
           set-syntax-end-comment
           set-syntax-start-multi-comment
           set-syntax-end-multi-comment
           set-syntax-start-column-comment
           で指定された領域
  :tag     set-syntax-tagで指定されたキャラクタに囲まれた領域
  nil      上記以外の領域


■paste-from-clipboard
[Type       ]: Function
[Arguments  ]: paste-from-clipboard
[Package    ]: editor
[Seealso    ]: paste-rectangle-from-clipboard , si:*paste-hook*
[File       ]: select.l
[Section    ]: リージョン
[Description]: 
クリップボードの内容を貼り付けます。


■paste-rectangle-from-clipboard
[Type       ]: Function
[Arguments  ]: paste-rectangle-from-clipboard
[Package    ]: editor
[Seealso    ]: paste-from-clipboard
[File       ]: select.l
[Section    ]: リージョン
[Description]: 
paste-from-clipboardとは異なり、クリップボードの内容を矩形で貼り付けます。


■path-equal
[Type       ]: Function
[Arguments  ]: path-equal PATHNAME1 PATHNAME2
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
PATHNAME1とPATHNAME2が同じパスを指していればt、そうでなければnilを返します。

使用例：
  (path-equal "C:/Windows/" "c:/windows")
  => t


■pathname-device
[Type       ]: Function
[Arguments  ]: pathname-device PATHNAME
[Package    ]: lisp
[Seealso    ]: pathname-type , pathname-name , pathname-directory , pathname-host
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
PATHNAMEのドライブ名を返します。
使用例：
  (setq a "//SAMURAI/Applications/xyzzy/xyzzy.exe")
  => "//SAMURAI/Applications/xyzzy/xyzzy.exe"

  (pathname-device a)
  => nil

  (setq a (merge-pathnames "xyzzy.exe" (si:system-root)))
  => "C:/Applications/xyzzy/xyzzy.exe"

  (pathname-device a)
  "C"


■pathname-directory
[Type       ]: Function
[Arguments  ]: pathname-directory PATHNAME
[Package    ]: lisp
[Seealso    ]: pathname-type , pathname-name , pathname-device , pathname-host , directory-namestring
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
PATHNAMEのディレクトリ名を返します。各階層ごとの名前を要素とするリスト形
式で返されます。
使用例：
  (setq a (merge-pathnames "xyzzy.exe" (si:system-root)))
  =>"C:/Applications/xyzzy/xyzzy.exe"

  (pathname-directory a)
  =>("Applications" "xyzzy")


■pathname-host
[Type       ]: Function
[Arguments  ]: pathname-host PATHNAME
[Package    ]: lisp
[Seealso    ]: pathname-type , pathname-name , pathname-directory , pathname-device
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
PATHNAMEのホスト名を返します。
使用例：
  (setq a "//SAMURAI/Applications/xyzzy/xyzzy.exe")
  =>"//SAMURAI/Applications/xyzzy/xyzzy.exe"

  (pathname-host a)
  =>"SAMURAI"

  (setq a (merge-pathnames "xyzzy.exe" (si:system-root)))
  =>"C:/Applications/xyzzy/xyzzy.exe"

  (pathname-host a)
  =>nil


■pathname-match-p
[Type       ]: Function
[Arguments  ]: pathname-match-p PATHNAME WILDNAME
[Package    ]: lisp
[Seealso    ]: wild-pathname-p , *brackets-is-wildcard-character*
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
PATHNAME が WILDNAME で指定されたワイルドカードにマッチするかどうかを
返します。

  PATHNAME : 検査対象のパス文字列
  WILDNAME : ワイルドカード文字列
             先頭文字が | の場合は否定の意味となる。
             *brackets-is-wildcard-character* の値が non-nil の場合は
             文字列中の [...] をワイルドカードと見なす。

戻り値：
  t    PATHNAME が WILDNAME にマッチする。
  nil  PATHNAME が WILDNAME にマッチしない。

使用例：
  (setq p (merge-pathnames "xyzzy.exe" (si:system-root)))
  =>"C:/Applications/xyzzy/xyzzy.exe"

  (setq w (merge-pathnames "xyzzy.*" (si:system-root)))
  =>"C:/Applications/xyzzy/xyzzy.*"

  (wild-pathname-p p)
  =>nil

  (wild-pathname-p w)
  =>t

  (pathname-match-p p w)
  =>t

  (pathname-match-p p (concat "|" w))
  =>nil

  (setq w "*/xyzzy.ini")
  =>"*/xyzzy.ini"

  (pathname-match-p p w)
  =>nil

  (pathname-match-p p (concat "|" w))
  =>t


■pathname-name
[Type       ]: Function
[Arguments  ]: pathname-name PATHNAME
[Package    ]: lisp
[Seealso    ]: pathname-type , pathname-directory , pathname-device , pathname-host , file-namestring
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
PATHNAMEのファイル名（拡張子無し）を返します。
使用例：
  (setq a (merge-pathnames "xyzzy.exe" (si:system-root)))
  =>"C:/Applications/xyzzy/xyzzy.exe"

  (pathname-name a)
  =>"xyzzy"


■pathname-type
[Type       ]: Function
[Arguments  ]: pathname-type PATHNAME
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
ファイル名の拡張子を取り出します。拡張子がなければnilを返します。

  PATHNAME : 拡張子を取り出すファイル名を指定します。

使用例：
  ;;; foo.lzh
  (pathname-type "foo.lzh")
  =>"lzh"
  (pathname-type "foo/bar/zzz.txt")
  =>"txt"


■peek-char
[Type       ]: Function
[Arguments  ]: peek-char &optional PEEK-TYPE INPUT-STREAM EOF-ERROR-P EOF-VALUE RECURSIVE-P
[Package    ]: lisp
[Seealso    ]: read-char
[File       ]: builtin.l
[Section    ]: 入出力
[Description]: 
ストリームから文字を覗き見ます。read-charしてunread-charするようなもんです。

使用例：
  ;;; 標準入力の文字を除き見る。
  (peek-char *standard-input* nil nil nil)


■perform-replace
[Type       ]: Function
[Arguments  ]: perform-replace PATTERN REPLACEMENT QUERY REGEXP INTERACTIVE-P NOERROR
[Package    ]: editor
[Seealso    ]: replace-buffer , replace-string , substitute-string
[File       ]: search.l
[Section    ]: 検索・正規表現
[Description]: 
バッファを検索して文字列を置換します。特に判断がいらないのならば
scan-bufferするよりも簡単です。replace-bufferを使って実装されています。
  
  PATTERN       : 置換前文字列です。
  REPLACEMENT   : 置換後文字列です。\1, \2 ... \9も使用できます。
  QUERY         : 確認あり？
  REGEXP        : 正規表現？
  INTERACTIVE-P : 対話的かどうか？
                  undoの記録の仕方と、メッセージの出し方が違うだけ
  NOERROR       : 文字列が見つからないときエラーを出す？

互換性：
  muleにはなさそう。


■phase
[Type       ]: Function
[Arguments  ]: phase Z
[Package    ]: lisp
[File       ]: number.l
[Section    ]: 数値
[Description]: 
複素数の偏角を求めます。
戻り値はラジアン単位です。

  (phase -1)
  =>3.141593


■plain-error
[Type       ]: Function
[Arguments  ]: plain-error &rest REST
[Package    ]: lisp
[File       ]: misc.l
[Section    ]: エラー
[Description]: 
（詳細不明）


■plusp
[Type       ]: Function
[Arguments  ]: plusp NUMBER
[Package    ]: lisp
[Seealso    ]: minusp
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
NUMBERがゼロより大きければt、そうでなければnilを返します。

使用例：
  (plusp 0)
  => nil
  (plusp 1)
  => t
  (plusp 0.00001)
  => t


■point
[Type       ]: Function
[Arguments  ]: point
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
この関数は、ポイントの位置を integer として返します。 
goto-char でその位置に飛ぶことが出来ます。バッファの先頭ではpoint-minに
等しく、バッファの最後ではpoint-maxに等しいです。

使用例：
  (point)
  => 175


■point-marker
[Type       ]: Function
[Arguments  ]: point-marker
[Package    ]: editor
[Seealso    ]: set-marker
[File       ]: cmds.l
[Section    ]: ポジション
[Description]: 
新しいマーカーを作成し、現在のカーソル位置にセットして返します。


■point-max
[Type       ]: Function
[Arguments  ]: point-max
[Package    ]: editor
[Seealso    ]: point-min
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
カレントバッファの一番大きなポイント値を返します。narrow-to-region等で、
clipping 制限が用いられてない限り、カレントバッファの大きさになります。 

使用例：
  (point-max)
  => 189568


■point-min
[Type       ]: Function
[Arguments  ]: point-min
[Package    ]: editor
[Seealso    ]: point-max
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
カレントバッファの一番小さなポイント値を返します。narrow-to-region等で、
clipping 制限が用いられてない限り 0 になります。 

使用例：
  (point-min)
  => 0


■point-to-register
[Type       ]: Function
[Arguments  ]: point-to-register R
[Package    ]: editor
[Seealso    ]: jump-to-register
[File       ]: register.l
[Section    ]: ポジション
[Description]: 
新しいマーカーを作って現在位置にセットし、レジスタ R に格納します。


■pop
[Type       ]: Macro
[Arguments  ]: pop PLACE
[Package    ]: lisp
[File       ]: setf.l
[Section    ]: リスト
[Description]: 
リストの先頭要素を取り除きます。取り除いた要素を返します。

  PLACE : setfに適用できるものでなければなりません。

使用例：
  (setq x '(a (b c d) e f))     => (a (b c d) e f)
  (pop (cdr (second x)))        => c
  x                             => (a (b d) e f)

互換性：
  Common Lispとxyzzyにあり。
  muleはなさそう。


■pop-to-buffer
[Type       ]: Function
[Arguments  ]: pop-to-buffer BUFFER &optional POPUP-WINDOWS VERT-P
[Package    ]: editor
[File       ]: window.l
[Section    ]: ウィンドウ
[Description]: 
指定されたバッファを表示します。POPUP-WINDOWS が指定された場合画面を分割
してバッファを表示します。ウィンドウが既に分割されていたら、新たに分割せ
ずにそのウィンドウに移動し表示します。

表示幅が指定された場合には、縦分割が指定されていない場合、モード行を表示
している状態で、およそ指定された数値分の行数が表示できる大きさのウィンド
ウができます。
縦分割が指定された場合には、上下ではなく左右に分割し、行番号を表示してい
ない状態で、およそ指定された数値分の列数が表示できる大きさのウインドウが
できます。

  BUFFER        : バッファ、または、バッファの名前を指定します。
  POPUP-WINDOWS : 分割する行数／列数を指定します。
        t             ニ分割します。
        整数          指定行数／列数で分割します。
        nil           ウィンドウが分割されていない場合でも新たに
                      分割しません。
  VERT-P        : 縦方向に分割します。
        non-nil       左右にニ分割します。
        nil           上下にニ分割します。

使用例：
  ;;; den8の場合
  (defvar *den8-summary-window-ratio* 1/4)

  (defun den8-viewer ()
    (let ((view (switch-to-buffer "*Den8 View*")))     ; Viewを作る
      (let ((sum (switch-to-buffer "*Den8 Summary*"))) ; Summaryを作る
           <初期化・省略> ))
    (delete-other-windows)        ; 自分以外の全部のウインドウを消す
    (den8-popup-summary-buffer))  ; ２分割して、上下にサマリと内容を表示

  (defun den8-popup-summary-buffer ()
    (pop-to-buffer den8-summary-buffer
       (truncate (* (screen-height) *den8-summary-window-ratio*))))


■popup-list
[Type       ]: Function
[Arguments  ]: popup-list LIST CALLBACK &optional POINT
[Package    ]: editor
[Seealso    ]: dabbrev-popup , popup-string
[File       ]: builtin.l
[Section    ]: その他
[Description]: 
ポップアップリストを表示します。選択された項目を引数にコールバッ
ク関数が呼び出されます。

使用例：
  (defun func ()
    (popup-list
       '("123" "abc" "xyz")
       #'(lambda (x) (msgbox "\"~A\" selected" x))))
  => func


■popup-string
[Type       ]: Function
[Arguments  ]: popup-string STRING POINT &optional TIMEOUT
[Package    ]: editor
[Seealso    ]: popup-list , continue-popup
[File       ]: builtin.l
[Section    ]: その他
[Description]: 
文字列をポップアップさせます。ツールチップのポップみたいな表示です。

  STRING  : ポップアップさせる文字列を指定します。
  POINT   : 文字列を表示する位置をポイントで指定します。
  TIMEOUT : 表示を止めるまでの秒数を指定します。


■pos-not-visible-in-window-p
[Type       ]: Function
[Arguments  ]: pos-not-visible-in-window-p POINT &optional WINDOW
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ウィンドウ
[Description]: 
指定されたポイントPOINTがウィンドウの表示範囲内にないかを返します。

  t     表示範囲内にない。
  nil   表示範囲内にある。


■pos-visible-in-window-p
[Type       ]: Function
[Arguments  ]: pos-visible-in-window-p POINT &optional WINDOW
[Package    ]: editor
[File       ]: window.l
[Section    ]: ウィンドウ
[Description]: 
ポイントがウィンドウの表示範囲内にあるかを返します。

  t     表示範囲内にある。
  nil   表示範囲内にない。


■position
[Type       ]: Function
[Arguments  ]: position ITEM SEQUENCE &key :from-end :test :test-not :start :end :key
[Package    ]: lisp
[Seealso    ]: position-if , position-if-not , find , member
[File       ]: builtin.l
[Section    ]: シーケンス
[Description]: 
SEQUENCE の中で ITEM との :test を満たすものがあればそのインデックスを返します。
なければ nil を返します。

使用例：
  ;;; リストの中から'aのインデックスを調べる
  (position 'a '(e c a b))
  => 2


■position-if
[Type       ]: Function
[Arguments  ]: position-if PREDICATE SEQUENCE &key :from-end :start :end :key
[Package    ]: lisp
[Seealso    ]: position , position-if-not
[File       ]: builtin.l
[Section    ]: シーケンス
[Description]: 
SEQUENCEの中でPREDICATEを満たすものがあればそのインデックスを返します。
なければnilを返します。


■position-if-not
[Type       ]: Function
[Arguments  ]: position-if-not PREDICATE SEQUENCE &key :from-end :start :end :key
[Package    ]: lisp
[Seealso    ]: position , position-if
[File       ]: builtin.l
[Section    ]: シーケンス
[Description]: 
SEQUENCEの中でPREDICATEを満たさないものがあればそのインデックスを返します。
なければnilを返します。


■post-buffer-modified-hook
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: enable-post-buffer-modified-hook , post-buffer-modified-hook-enabled-p
[Section    ]: 変数と定数
[Description]: 
任意のバッファで任意の操作が行われたときに呼び出されます。
[xyzzy:06354]を参照
xyzzy 0.2.1.186〜
  
使用例：
  (enable-post-buffer-modified-hook t)
  (defun buffer-modified-hook (buffer operation from to undo-p)
    (message "ope:~A  undo:~A from:~d to:~d" operation undo-p from to))
  (add-hook 'post-buffer-modified-hook 'buffer-modified-hook)


■post-buffer-modified-hook-enabled-p
[Type       ]: Function
[Arguments  ]: post-buffer-modified-hook-enabled-p &optional BUFFER
[Package    ]: editor
[Seealso    ]: enable-post-buffer-modified-hook , post-buffer-modified-hook
[File       ]: builtin.l
[Section    ]: 変数と定数
[Description]: 
バッファでpost-buffer-modified-hookが有効かを判定します。
[xyzzy:06354]を参照
xyzzy 0.2.1.186〜


■pre-selection-p
[Type       ]: Function
[Arguments  ]: pre-selection-p
[Package    ]: editor
[Seealso    ]: selection-point , selection-mark
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
セレクションが存在すれば t しなければ nil を返します。


■preceding-char
[Type       ]: Function
[Arguments  ]: preceding-char
[Package    ]: editor
[Seealso    ]: following-char
[File       ]: builtin.l
[Section    ]: テキスト
[Description]: 
カーソルの前の文字を返します。
バッファの先頭にカーソルがある場合には、#\NULを返します。

使用例：
  ;;; カーソルの直前が#\LFDか？つまりカーソルは行頭にあるか？
  (char= (preceding-char) #\LFD)
  => t


■prepend-to-register
[Type       ]: Function
[Arguments  ]: prepend-to-register R START END &optional DELETE
[Package    ]: editor
[Seealso    ]: append-to-register
[File       ]: register.l
[Section    ]: リージョン
[Description]: 
START と END で指定されるリージョンを、レジスタ R に格納されているテキ
ストの先頭へ追加します。
R にテキストが入っていないとエラーになります。
DELETE が non-nil ならば同時にリージョンをを削除します。


■previous-buffer
[Type       ]: Function
[Arguments  ]: previous-buffer
[Package    ]: editor
[Seealso    ]: next-buffer
[File       ]: buffer.l
[Section    ]: バッファ
[Description]: 
一つ前のバッファに切替えます。next-bufferの反対です。


■previous-line
[Type       ]: Function
[Arguments  ]: previous-line &optional (N 1)
[Package    ]: editor
[Seealso    ]: forward-line , previous-virtual-line
[File       ]: cmds.l
[Section    ]: ポジション
[Description]: 
1行前に移動します。

使用例：
  (previous-line)


■previous-page
[Type       ]: Function
[Arguments  ]: previous-page
[Package    ]: editor
[Seealso    ]: next-page
[File       ]: page.l
[Section    ]: ウィンドウ
[Description]: 
1ページ分画面を上スクロールします。
*page-scroll-half-window* が non nil なら半画面ずつスクロールします。


■previous-pseudo-frame
[Type       ]: Function
[Arguments  ]: previous-pseudo-frame
[Package    ]: editor
[Seealso    ]: next-pseudo-frame , other-pseudo-frame
[File       ]: pframe.l
[Section    ]: ウィンドウ
[Description]: 
前のフレームに移動します。[C-x 6 p]


■previous-virtual-line
[Type       ]: Function
[Arguments  ]: previous-virtual-line &optional (N 1)
[Package    ]: editor
[Seealso    ]: previous-line
[File       ]: cmds.l
[Section    ]: ポジション
[Description]: 
N行前の表示行に移動します。
  t    先頭行以外の場合
  nil  先頭行の場合


■previous-window
[Type       ]: Function
[Arguments  ]: previous-window WINDOW &optional MINIBUF
[Package    ]: editor
[Seealso    ]: next-window
[File       ]: builtin.l
[Section    ]: ウィンドウ
[Description]: 
WINDOW の前のウィンドウを返します。
  
  MINIBUF : ミニバッファウィンドウを候補に入れるか
       nil    無視する
   non-nil    候補に入れる


■previous-word
[Type       ]: Function
[Arguments  ]: previous-word &optional (ARG 1)
[Package    ]: editor
[Seealso    ]: backward-word
[File       ]: cmds.l
[Section    ]: ポジション
[Description]: 
カーソルを後方の単語の先頭に移動します。


■prin1
[Type       ]: Function
[Arguments  ]: prin1 OBJECT &optional STREAM
[Package    ]: lisp
[Seealso    ]: princ
[File       ]: stream.l
[Section    ]: 入出力
[Description]: 
オブジェクトをストリームに出力します。

  OBJECT : 出力するオブジェクトを指定します。
  STREAM : ストリームを指定します。

STREAMを省略されたときは、標準出力に出力します。princでの出力とよく似て
いますが、エスケープ文字を出力することや文字列が引用符で囲まれる点が異な
ります。

使用例：
  ;;; princとprin1の出力の違い
  (princ "abc") => abc  (prin1 "abc") => "abc"
  (princ #\a)   => a    (prin1 #\a)   => #\a


■princ
[Type       ]: Function
[Arguments  ]: princ OBJECT &optional STREAM
[Package    ]: lisp
[Seealso    ]: prin1
[File       ]: stream.l
[Section    ]: 入出力
[Description]: 
オブジェクトをストリームに出力します。

  OBJECT : 出力するオブジェクトを指定します。
  STREAM : ストリームを指定します。

STREAMを省略されたときは、標準出力に出力します。prin1での出力とよく似て
いますが、エスケープ文字を出力しないことや文字列が引用符で囲まれない点が
異なります。
※CLtL2(Common Lisp the Language, 2nd edition)によると人間に読み易いよう
  に意図しているそうです。

使用例：
  ;;; princとprin1の出力の違い
  (princ "abc") => abc  (prin1 "abc") => "abc"
  (princ #\a)   => a    (prin1 #\a)   => #\a


■print-buffer
[Type       ]: Function
[Arguments  ]: print-buffer &optional BUFFER
[Package    ]: editor
[Seealso    ]: print-dialog
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
バッファを印刷します。


■print-dialog
[Type       ]: Function
[Arguments  ]: print-dialog &optional BUFFER
[Package    ]: editor
[Seealso    ]: print-buffer
[File       ]: builtin.l
[Section    ]: ダイアログ
[Description]: 
指定されたバッファBUFFERの印刷用のダイアログを表示します。


■process-buffer
[Type       ]: Function
[Arguments  ]: process-buffer PROCESS
[Package    ]: editor
[Seealso    ]: buffer-process
[File       ]: builtin.l
[Section    ]: プロセス
[Description]: 
プロセスが割り付けられているバッファを返します。


■process-eol-code
[Type       ]: Function
[Arguments  ]: process-eol-code PROCESS
[Package    ]: editor
[Seealso    ]: set-process-eol-code
[File       ]: builtin.l
[Section    ]: プロセス
[Description]: 
PROCESSに設定された改行コードを返します。


■process-exit-code
[Type       ]: Function
[Arguments  ]: process-exit-code PROCESS
[Package    ]: editor
[Seealso    ]: signal-process , process-status
[File       ]: builtin.l
[Section    ]: プロセス
[Description]: 
指定されたプロセスPROCESSの終了コードを取得します。


■process-filter
[Type       ]: Function
[Arguments  ]: process-filter PROCESS
[Package    ]: editor
[Seealso    ]: set-process-filter
[File       ]: builtin.l
[Section    ]: プロセス
[Description]: 
PROCESSに設定されたFILTER用の関数を返します。


■process-incode
[Type       ]: Function
[Arguments  ]: process-incode PROCESS
[Package    ]: editor
[Seealso    ]: set-process-incode
[File       ]: builtin.l
[Section    ]: プロセス
[Description]: 
PROCESSに設定された入力用の漢字コードを指定します。


■process-outcode
[Type       ]: Function
[Arguments  ]: process-outcode PROCESS
[Package    ]: editor
[Seealso    ]: set-process-outcode
[File       ]: builtin.l
[Section    ]: プロセス
[Description]: 
PROCESSに設定された出力用の漢字コードを指定します。


■process-send-string
[Type       ]: Function
[Arguments  ]: process-send-string PROCESS STRING
[Package    ]: editor
[Seealso    ]: make-process
[File       ]: builtin.l
[Section    ]: プロセス
[Description]: 
プロセスに文字列を送ります。

  PROCESS : 文字列を送りつけるプロセスを指定します。 
  STRING  : 送りつける文字列を指定します。

使用例：
  ;;; sort.exeを起動して、"abc" "aab" "aac"を送りつける。
  (setq proc (make-process "sort"))
  => #<process 135271372>
  (process-send-string proc "abc\n") => t
  (process-send-string proc "aab\n") => t
  (process-send-string proc "aac\n") => t
  (process-send-string proc "^Z")    => t
  aab
  aac
  abc


■process-sentinel
[Type       ]: Function
[Arguments  ]: process-sentinel PROCESS
[Package    ]: editor
[Seealso    ]: set-process-sentinel
[File       ]: builtin.l
[Section    ]: プロセス
[Description]: 
PROCESSに設定されたSENTINEL用の関数を返します。


■process-status
[Type       ]: Function
[Arguments  ]: process-status PROCESS
[Package    ]: editor
[Seealso    ]: kill-process , make-process
[File       ]: builtin.l
[Section    ]: プロセス
[Description]: 
指定されたプロセスの状態を返します。

  :run  動作中
  :exit 停止


■processp
[Type       ]: Function
[Arguments  ]: processp OBJECT
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
指定されたOBJECTがプロセスかを返します。

  t     OBJECTはプロセス
  nil   OBJECTはプロセスではない


■prog1
[Type       ]: Macro
[Arguments  ]: prog1 FIRST &body BODY
[Package    ]: lisp
[File       ]: evalmacs.l
[Section    ]: 制御構造
[Description]: 
フォームを順番に評価して最初のフォームの結果を返します。

使用例：
  (prog1 (print "The first form")
         (print "The second form")
         (print "The third form"))
  -> "The first form"
  -> "The second form"
  -> "The third form"
  => "The first form"


■prog2
[Type       ]: Macro
[Arguments  ]: prog2 FIRST SECOND &body BODY
[Package    ]: lisp
[Seealso    ]: progn , prog1
[File       ]: evalmacs.l
[Section    ]: 制御構造
[Description]: 
フォームを順番に評価して二番目のフォームの結果を返します。

使用例：
  (prog2 (print "The first form")
         (print "The second form")
         (print "The third form"))
  -> "The first form"
  -> "The second form"
  -> "The third form"
  => "The second form"


■progn
[Type       ]: Special Form
[Arguments  ]: progn {FORM}*
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 制御構造
[Description]: 
フォームを順番に評価して最後のフォームの結果を返します。

使用例：
  (progn (print "The first form")
         (print "The second form")
         (print "The third form"))
  -> "The first form"
  -> "The second form"
  -> "The third form"
  => "The third form"


■provide
[Type       ]: Function
[Arguments  ]: provide MODULE-NAME
[Package    ]: lisp
[Seealso    ]: require
[File       ]: evalmacs.l
[Section    ]: 評価
[Description]: 
ある機能を持ったモジュールがロードされた事を示すためにファイルの先頭に書
いておく「おまじない」です。ここに書いたモジュール名が変数*modules*に登
録されます。

requireがモジュールのロードをする際にこの変数がチェックされてロード済だ
ったらもうロードしません。汎用的なモジュールを書く場合には使うようにしま
しょう。

互換性：
  Common Lispにはあり。
  muleにはなさそう。

使用例：
  ;;; lispmode.lより
  (provide "lispmode")


■psetq
[Type       ]: Macro
[Arguments  ]: psetq {VAR FORM}*
[Package    ]: lisp
[Seealso    ]: setq
[File       ]: evalmacs.l
[Section    ]: 変数と定数
[Description]: 
変数に値を設定します。

  (psetq 変数1 値1 変数2 値2 ... 変数N 値N)

上記の様に変数と値の組を任意の数だけ並べることができます。 

setqと似ていますがsetqが頭から順に変数に束縛していくのに対し、psetqは値
を全て評価した上で束縛します。

使用例：
  ; psetq の場合
  (let ((from 1)
        (to 100))
    (psetq from to to from)
    (values from to))
  =>100
  =>1

  ; setq の場合
  (let ((from 1)
        (to 100))
    (setq from to to from)
    (values from to))
  =>100
  =>100


■pseudo-frame-selector
[Type       ]: Function
[Arguments  ]: pseudo-frame-selector
[Package    ]: editor
[Seealso    ]: switch-pseudo-frame , select-pseudo-frame
[File       ]: pframe.l
[Section    ]: ウィンドウ
[Description]: 
ダイアログからフレームを選択します。


■push
[Type       ]: Macro
[Arguments  ]: push ITEM PLACE
[Package    ]: lisp
[Seealso    ]: pushnew
[File       ]: setf.l
[Section    ]: リスト
[Description]: 
リストの先頭に要素を追加します。

  ITEM  : リストに追加する要素です。
  PLACE : pushする場所はsetfに適用できるものでなければなりません。

使用例：
  ;;; リストの途中にpushしてみる。
  (setq x '(a (b c d) e f))     => (a (b c d) e f)
  (push 99 (cdr (second x)))    => (99 c d)
  x                             => (a (b 99 c d) e f)

互換性：
  Common Lispとxyzzyにあり。
  muleは無さそう。


■pushnew
[Type       ]: Macro
[Arguments  ]: pushnew ITEM PLACE &KEY :test :test-not :key
[Package    ]: lisp
[Seealso    ]: push , adjoin
[File       ]: setf.l
[Section    ]: リスト
[Description]: 
push とほぼ同じですが、リストの最上位に現れている要素でなければリストの
先頭に追加されます。追加するかどうかは、 :test もしくは :test-not で指定
される比較テストを使ってリストの全要素についてチェックして決められます。

  ITEM      : 登録する内容です。
  PLACE     : 登録する場所です。
  :test     : 比較関数です。標準では#'eql？
  :test-not : 比較関数です。
  :key      : キー判定用の関数です。標準では#'identity？

使用例：
  (setq *a* nil)                ;; この時 *a* の値は nil
  (pushnew 'a *a*)  => (a)      ;; この時 *a* の値は (a)
  (pushnew 'b *a*)  => (b a)    ;; この時 *a* の値は (b a)
  (pushnew 'a *a*)  => (b a)    ;; この時 *a* の値は (b a)

互換性：
  Common Lispとxyzzyにあり。
  muleは無さそう。


■quietly-read-abbrev-file
[Type       ]: Function
[Arguments  ]: quietly-read-abbrev-file &optional FILE
[Package    ]: editor
[Seealso    ]: abbrev-mode
[File       ]: abbrev.l
[Section    ]: モード
[Description]: 
Q.現在、モードを切り替えて且つ abbrev を有効にするには、
  ┌───────────────────────────────┐
  │M-x: sql-mode,                                                │
  │M-x: abbrev-mode                                              │
  │M-x: read-abbrev-file,                                        │
  │Read-abbrev-file: C:/xyzzy/.abbrev_defs                       │
  └───────────────────────────────┘
  のように４段階踏まなくてはなりません。最初の M-x: sql-mode の時か、
  ファンクションキーに割り当てて一度に行う方法はないもんでしょうか？

A.[xyzzy:02017]赤塚慶さん
  .xyzzy に
  ┌───────────────────────────────┐
  │; 起動時に abbrev file を読み込む                             │
  │(quietly-read-abbrev-file)                                    │
  └───────────────────────────────┘
  とかいておくと、  .abbrev_defs を呼んでくれます。

  [xyzzy:02020]亀井哲弥さん
  これに加えて、
  ┌───────────────────────────────┐
  │(add-hook 'ed::*sql-mode-hook* #'(lambda () (abbrev-mode t))) │
  └───────────────────────────────┘
  も書いておけば、M-x sql-mode だけでいけると思います(たぶん)。


■quit
[Type       ]: Function
[Arguments  ]: quit
[Package    ]: editor
[File       ]: cmds.l
[Section    ]: エラー
[Description]: 
コマンドの実行などを中止します。[C-g]

実行に時間がかかりすぎる場合や無限ループに陥ったときなどに使われます。


■quote
[Type       ]: Special Form
[Arguments  ]: quote OBJECT
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 変数と定数
[Description]: 
OBJECTを評価せずに返します。
single quoteで代用されます。

使用例：
  ;;; quoteと'を使ってみる。
  (quote x)             => x
  'x                    => x
  (eq (quote x) 'x)     => t


■quote-char
[Type       ]: Function
[Arguments  ]: quote-char &optional (ARG 1)
[Package    ]: editor
[File       ]: cmds.l
[Section    ]: 文字
[Description]: 
プロンプトを表示して、入力に従ってバッファに文字を挿入します。[C-q]
制御文字の入力などに使われます。
文字コードによる入力も可能です。


■quote-region
[Type       ]: Function
[Arguments  ]: quote-region FROM TO
[Package    ]: editor
[File       ]: region.l
[Section    ]: リージョン
[Description]: 
指定されたリージョンの先頭に引用を表す接頭子を挿入します。
引用を表す接頭子として*quotation-prefix*を挿入します。


■quote-string
[Type       ]: Function
[Arguments  ]: quote-string STRING TARGET-CHAR QUOTE-CHAR
[Package    ]: editor
[Seealso    ]: substitute-string
[File       ]: builtin.l
[Section    ]: 文字列
[Description]: 
文字列中の特定文字の前にエスケープ文字をつけます。

  STRING      : 置換する文字列
  TARGET-CHAR : エスケープされる文字
  QUOTE-CHAR  : エスケープ文字

使用例：
  ;;;   スペースの前に'をつけます。
  (quote-string  "a b  c"  #\SPC #\')
  => "a' b' ' c"


■quoted-printable-decode-region
[Type       ]: Function
[Arguments  ]: quoted-printable-decode-region FROM TO
[Package    ]: editor
[Seealso    ]: si:quoted-printable-decode , quoted-printable-decode-region-to-file
[File       ]: encdec.l
[Section    ]: リージョン
[Description]: 
リージョンをQuoted-Printableデコードします。


■quoted-printable-decode-region-to-file
[Type       ]: Function
[Arguments  ]: quoted-printable-decode-region-to-file FILENAME FROM TO
[Package    ]: editor
[Seealso    ]: si:quoted-printable-decode , quoted-printable-decode-region
[File       ]: encdec.l
[Section    ]: リージョン
[Description]: 
リージョンをQuoted-Printableデコードしてファイルに保存します。


■random
[Type       ]: Function
[Arguments  ]: random NUMBER &optional STATE
[Seealso    ]: *random-state* , make-random-state
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
0以上NUMBER未満の乱数を返します。

  STATE: 乱数の状態変数です。破壊的に処理されます。


■rassoc
[Type       ]: Function
[Arguments  ]: rassoc ITEM A-LIST &key :test :test-not :key
[Package    ]: lisp
[Seealso    ]: rassoc-if , rassoc-if-not , assoc
[File       ]: builtin.l
[Section    ]: リスト
[Description]: 
連想リスト A-LIST の中で cdr 部が ITEM との :test を満たす最初のペアを返します。

使用例：
  (rassoc 'a '((a . b) (b . c) (c . a) (z . a)))
  => (c . a)


■rassoc-if
[Type       ]: Function
[Arguments  ]: rassoc-if PREDICATE A-LIST &key :key
[Package    ]: lisp
[Seealso    ]: rassoc , rassoc-if-not
[File       ]: builtin.l
[Section    ]: リスト
[Description]: 
連想リスト A-LIST の中で cdr 部が PREDICATE を満たす最初のペアを返します。

使用例：
  (rassoc-if #'numberp '((a . b) (1 . c) (2 . 4)))
  => (2 . 4)


■rassoc-if-not
[Type       ]: Function
[Arguments  ]: rassoc-if-not PREDICATE A-LIST &key :key
[Package    ]: lisp
[Seealso    ]: rassoc , rassoc-if
[File       ]: builtin.l
[Section    ]: リスト
[Description]: 
連想リスト A-LIST の中で cdr 部が PREDICATE を満たさない最初のペアを返します。

使用例：
  (rassoc-if-not #'numberp '((a . b) (1 . c) (2 . d)))
  => (a . b)


■rational
[Type       ]: Function
[Arguments  ]: rational NUMBER
[Package    ]: lisp
[Seealso    ]: rationalize
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
実数を有理数に変換します。もしも、 NUMBER がすでに有理数だったら、そのま
ま返します。 rational の場合は、浮動小数点数を全く誤差を含まないものとし
て扱い、その浮動小数点数を数学的に有理数化します。
  
  ;;; 0.5 は2進数でちょうど表せる
  (rational 0.5)
  =>1/2
  ;;; 0.1 は2進数では誤差を含む
  (rational 0.1)
  =>13421773/134217728
  ;;; 倍精度だとまた違う
  (rational 0.1d0)
  =>3602879701896397/36028797018963968


■rationalize
[Type       ]: Function
[Arguments  ]: rationalize NUMBER
[Package    ]: lisp
[Seealso    ]: rational , float
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
実数を有理数に変換します。もしも、 NUMBER がすでに有理数だったら、そのま
ま返します。 rationalize の場合は、浮動小数点数を表示される範囲までの精
度で扱い、近似して有理数化します。


■rationalp
[Type       ]: Function
[Arguments  ]: rationalp OBJECT
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
OBJECTがratioかintegerならt、それ以外ならnilを返します。

  (rationalp x) == (typep x 'rational)


■re-search-backward
[Type       ]: Function
[Arguments  ]: re-search-backward REGEXP &optional NOERROR
[Package    ]: editor
[Seealso    ]: re-search-forward
[File       ]: search.l
[Section    ]: 検索・正規表現
[Description]: 
正規表現による後方検索をします。

  REGEXP  : 正規表現による検索文字列
  NOERROR : 文字列が見つからなかったときの動作を指定します。
        t   nil を返します。
        nil エラーメッセージを出力します。


■re-search-backward-again
[Type       ]: Function
[Arguments  ]: re-search-backward-again
[Package    ]: editor
[Seealso    ]: ed::*last-search-regexp* , re-search-forward-again
[File       ]: search.l
[Section    ]: 検索・正規表現
[Description]: 
前回の正規表現検索パターンで後方検索します。


■re-search-forward
[Type       ]: Function
[Arguments  ]: re-search-forward REGEXP &optional NOERROR
[Package    ]: editor
[Seealso    ]: re-search-backward
[File       ]: search.l
[Section    ]: 検索・正規表現
[Description]: 
正規表現による前方検索をします。

  REGEXP  : 正規表現による検索文字列
  NOERROR : 文字列が見つからなかったときの動作を指定します。
        t   nil を返します。
        nil エラーメッセージを出力します。


■re-search-forward-again
[Type       ]: Function
[Arguments  ]: re-search-forward-again
[Package    ]: editor
[Seealso    ]: ed::*last-search-regexp* , re-search-backward-again
[File       ]: search.l
[Section    ]: 検索・正規表現
[Description]: 
前回の正規表現検索パターンで前方検索します。


■read
[Type       ]: Function
[Arguments  ]: read &optional INPUT-STREAM EOF-ERROR-P EOF-VALUE RECURSIVE-P
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 入出力
[Description]: 
INPUT-STREAM から Lisp のオブジェクトを読み込んで返します。

  INPUT-STREAM : 入力元のストリーム
  EOF-ERROR-P  : EOFの状態でread-charしたときにどうするか？
        t               エラーとする。
        nil             エラーとせず、nilを返します。
  EOF-VALUE    : EOFの状態でreadしたときにnilの代わりに返す文字を指定します。
  RECURSIVE-P  : （詳細不明）


■read-buffer-name
[Type       ]: Function
[Arguments  ]: read-buffer-name PROMPT &key :default :history
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ミニバッファ
[Description]: 
ミニバッファにプロンプトを表示してユーザーがバッファ名を入力するのを待ち
ます。ユーザーの入力したバッファを返します。入力したバッファが存在しない
場合は、文字列をそのまま返します。
(interactive "B") に相当します。

  PROMPT     : プロンプト
  :default   : 初期値とする文字列
  :history   : ヒストリのリスト

使用例:
  ;;; ミニバッファからバッファ名を読み込む
  (read-buffer-name "Buffer: ")   ; ←*scratch* と入力
  =>#<buffer: *scratch*>


■read-char
[Type       ]: Function
[Arguments  ]: read-char &optional INPUT-STREAM EOF-ERROR-P EOF-VALUE RECURSIVE-P
[Package    ]: lisp
[Seealso    ]: read-char-no-hang
[File       ]: builtin.l
[Section    ]: 入出力
[Description]: 
指定された入力ストリームから一文字読み込んで、文字を返します。

  INPUT-STREAM : 入力ストリーム
  EOF-ERROR-P  : EOFの状態でread-charしたときにどうするか？
        t               エラーとする。
        nil             エラーとせず、nilを返します。
  EOF-VALUE    : EOFの状態でread-charしたときにnilの代わりに返す文字を指定します。
  RECURSIVE-P  : （詳細不明）

使用例：
  (read-char *keyboard*) <-- "a"を入力
  => #\a

補足：
  蛇足ですが、EOFはEnd Of Fileの略です。ファイルやストリームをすっかり読
  み終わってしまった状態を指します。

---- Common Lisp ------
Description: reads one character from the current stream and returns it 
as an object. If end of file is encountered, the operation of read-char 
is determined by the eof-error-p and eof-value arguments (see read).


■read-char-encoding
[Type       ]: Function
[Arguments  ]: read-char-encoding PROMPT &key :history
[Package    ]: editor
[Seealso    ]: *char-encoding-list*
[File       ]: builtin.l
[Section    ]: ミニバッファ
[Description]: 
ミニバッファにプロンプトを表示してユーザーが文字エンコーディングを入力す
るのを待ちます。ユーザーの入力した文字エンコーディングを返します。補完の
リストは *char-encoding-list* を参照しているようです。
(interactive "z") に相当します。

  PROMPT     : プロンプト
  :history   : ヒストリのリスト

使用例:
  ;;; ミニバッファから文字エンコーディングを読み込む
  (read-char-encoding "Encoding: ") ; ←utf8n と入力
  =>#.(make-utf8-encoding "utf8n" "Unicode (UTF-8N)" :signature nil :windows t :byte-order nil :cjk :jp)


■read-char-no-hang
[Type       ]: Function
[Arguments  ]: read-char-no-hang &optional INPUT-STREAM EOF-ERROR-P EOF-VALUE
[Package    ]: lisp
[Seealso    ]: read-char
[File       ]: builtin.l
[Section    ]: 入出力
[Description]: 
read-char と同じです。ただし、入力がなければ待たずに nil を返します。


■read-command-name
[Type       ]: Function
[Arguments  ]: read-command-name PROMPT &key :default :history
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ミニバッファ
[Description]: 
ミニバッファにプロンプトを表示してユーザーがコマンドを入力するのを待ちま
す。ユーザーの入力したコマンドのシンボルを返します。
(「コマンド」は「interactive宣言された関数」の意味で使ってます)
(interactive "C") に相当します。

  PROMPT     : プロンプト
  :default   : 初期値とする文字列
  :history   : ヒストリのリスト


■read-directory-name
[Type       ]: Function
[Arguments  ]: read-directory-name PROMPT &key :default :title :history
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ミニバッファ
[Description]: 
ミニバッファにプロンプトを表示してユーザーがディレクトリ名を入力するのを
待ちます。入力中は TAB キーでディレクトリ名を補完できます。 "~" はユーザ
ーのホームディレクトリに、 ".." は親ディレクトリに変換されます。ユーザー
の入力したディレクトリ名を返します。
(interactive "D") に相当します。

  PROMPT     : プロンプト
  :default   : 初期表示するディレクトリ名
  :history   : ヒストリのリスト

使用例：
  ;;; ミニバッファからディレクトリ名を読み取る。
  (read-directory-name "directory: ")
  => "C:/applications/xyzzy/etc"


■read-exact-char-encoding
[Type       ]: Function
[Arguments  ]: read-exact-char-encoding PROMPT &key :history
[Package    ]: editor
[Seealso    ]: read-char-encoding
[File       ]: builtin.l
[Section    ]: ミニバッファ
[Description]: 
read-char-encoding との違いは無し？？？
(詳細不明)
(interactive "Z") に相当します。


■read-exist-buffer-name
[Type       ]: Function
[Arguments  ]: read-exist-buffer-name PROMPT &key :default :history
[Package    ]: editor
[Seealso    ]: read-buffer-name
[File       ]: builtin.l
[Section    ]: ミニバッファ
[Description]: 
read-buffer-name とほとんど同じですが、 read-exist-buffer-name はすでに
存在するバッファ名しか指定できません。
(interactive "b") に相当します。

  PROMPT     : プロンプト
  :default   : 初期値とする文字列
  :history   : ヒストリのリスト


■read-exist-file-name
[Type       ]: Function
[Arguments  ]: read-exist-file-name PROMPT &key :default :title :history
[Package    ]: editor
[Seealso    ]: read-file-name
[File       ]: builtin.l
[Section    ]: ミニバッファ
[Description]: 
read-file-name とほとんど同じですが、 read-exist-file-name はすでに存在
しているファイルしか指定できません。
(interactive "f") に相当します。

  PROMPT     : プロンプト
  :default   : 初期値とする文字列
  :title     : 一画面ファイラのタイトル
  :history   : ヒストリのリスト


■read-file-name
[Type       ]: Function
[Arguments  ]: read-file-name PROMPT &key :default :title :history
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ミニバッファ
[Description]: 
ミニバッファにプロンプトを表示してユーザーがファイル名を入力するのを待ち
ます。入力中は TAB キーでファイル名を補完できます。 "~" はユーザーのホー
ムディレクトリに、 ".." は親ディレクトリに変換されます。ユーザーの入力し
たファイル名を返します。
(interactive "F") に相当します。

  PROMPT     : プロンプト
  :default   : 初期表示するファイル名
  :title     : 一画面ファイラのタイトル
  :history   : ヒストリのリスト

使用例：
  ;;; ミニバッファからファイル名を読み取る。
  (read-file-name "filename: ")
  => "C:/applications/xyzzy/xyzzy.exe"


■read-file-name-list
[Type       ]: Function
[Arguments  ]: read-file-name-list PROMPT &key :default :title :history
[Package    ]: editor
[Seealso    ]: read-file-name
[File       ]: builtin.l
[Section    ]: ミニバッファ
[Description]: 
read-file-name とほとんど同じですが、 read-file-name-list は複数のファイ
ルを指定できます。複数のファイルを指定した場合は、そのリストを返します。
(interactive "l") に相当します。

  PROMPT     : プロンプト
  :default   : 初期値とする文字列
  :title     : 一画面ファイラのタイトル
  :history   : ヒストリのリスト


■read-from-string
[Type       ]: Function
[Arguments  ]: read-from-string STRING &optional EOF-ERROR-P EOF-VALUE &key :start :end :preserve-whitespace
[Package    ]: lisp
[Seealso    ]: parse-integer
[File       ]: stream.l
[Section    ]: 入出力
[Description]: 
文字列を読み、多値で2つの値を返します。1つ目の戻り値は Lisp Reader が読
み込んだオブジェクトそのもの、2つ目の戻り値は文字列中において読まなかっ
た最初の文字の位置です。文字列を最後まで読んだ場合、2つ目の戻り値はその
文字列の長さと等しくなります。

  STRING               : 読む対象である文字列
  EOF-ERROR-P          : EOFの状態でread-from-stringしたときにどうするか？
                non-nil    エラーとします。(デフォルト)
                nil        エラーとせず、nilを返します。
  EOF-VALUE            : EOFの状態でread-from-stringしたときにnilの代わ
                         りに返す文字を指定します。
  :start               : 読み始める位置(デフォルトは0)
  :end                 : 読み終わる位置(デフォルトは文字列の長さ)
  :preserve-whitespace : (詳細不明)
                non-nil    
                nil


■read-function-name
[Type       ]: Function
[Arguments  ]: read-function-name PROMPT &key :default :history
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ミニバッファ
[Description]: 
ミニバッファにプロンプトを表示してユーザーが関数名を入力するのを待ちます。
ユーザーの入力した関数のシンボルを返します。
(interactive "a") に相当します。

  PROMPT     : プロンプト
  :default   : 初期値とする文字列
  :history   : ヒストリのリスト


■read-integer
[Type       ]: Function
[Arguments  ]: read-integer PROMPT
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ミニバッファ
[Description]: 
ミニバッファにプロンプトを表示してユーザーが整数を入力するを待ちます。
ユーザーの入力した整数を返します。
(interactive "n") に相当します。

  PROMPT     : プロンプト

使用例：
  ;;; ミニバッファから数値を読み取る。
  (read-integer "num: ")
  => 123


■read-line
[Type       ]: Function
[Arguments  ]: read-line &optional INPUT-STREAM EOF-ERROR-P EOF-VALUE RECURSIVE-P
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 入出力
[Description]: 
--- 原文 ---
Description: is usually used to read text from the keyboard. It reads 
characters from input-stream until the #\newline character is encountered, 
and collects them into a string without the #\newline character. This 
function returns two values. The first is the string collected.  The 
second is non-nil if the operation is terminated on end of file and nil 
otherwise. If end of file is encountered immediately, operation of read-line 
is determined by the eof-error-p and eof-value arguments.

--- 意訳 ---
read-lineはキーボードからテキストを読み込むのに使われます。#\LFDが出てく
るまでINPUT-STREAMから文字を読み込みます。そして、#\LFD以外を集めて文字
列にします。read-lineは二つの値を返します。最初の値は集めた文字列そのも
のです。二つ目の値は、ファイルの終端まできてしまったらnon-nilを返します。
そうでなければnilを返します。もしファイルの終端が直ぐに現れたら、
read-lineはEOF-ERROR-PとEOF-VALUEにより終了させられます。


■read-registry
[Type       ]: Function
[Arguments  ]: read-registry SECTION KEY &optional ROOT
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: システム
[Description]: 
レジストリから読み込みます。

  SECTION : セクションを指定します。
  KEY     : キーを指定します。
  ROOT    : ルートキーを指定します。
     nil             HKEY_CURRENT_USER\Software\Free Software\Xyzzy
     :current-user   HKEY_CURRENT_USER
     :classes-root   HKEY_CLASSES_ROOT
     :local-machine  HKEY_LOCAL_MACHINE
     :users          HKEY_USERS

使用例：
  ;;; HKEY_CURRENT_USER/software/Microsoft/devstudio/5.0/Recent File List/project1 の値を読む
  (read-registry "software\\Microsoft\\devstudio\\5.0\\Recent File List" "project1"  :current-user)


■read-sexp
[Type       ]: Function
[Arguments  ]: read-sexp PROMPT
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ミニバッファ
[Description]: 
ミニバッファにプロンプトを表示してユーザーがS式を入力するのを待ちます。
ユーザーの入力したS式と文字数を多値で返します。
(interactive "x") に相当します。

  PROMPT     : プロンプト

使用例：
  ;;; ミニバッファからS式を入力する。
  (read-sexp "sexp: ")
  => (+ 3 3)
  => 7


■read-string
[Type       ]: Function
[Arguments  ]: read-string PROMPT &key :default :history
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ミニバッファ
[Description]: 
ミニバッファにプロンプトを表示してユーザーが文字列を入力するのを待ちます。
ユーザーの入力した文字列を返します。
(interactive "s") に相当します。

  PROMPT     : プロンプト
  :default   : 初期値とする文字列
  :history   : ヒストリのリスト

使用例：
  ;;; ミニバッファからURLを入力する。
  (read-string "URL: ")
  => "http://www.yahoo.co.jp"


■read-symbol-name
[Type       ]: Function
[Arguments  ]: read-symbol-name PROMPT &key :default :history
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ミニバッファ
[Description]: 
ミニバッファにプロンプトを表示してユーザーがシンボルを入力するのを待ちます。
ユーザーの入力したシンボルを返します。
(interactive "S") に相当します。

  PROMPT     : プロンプト
  :default   : 初期値とする文字列
  :history   : ヒストリのリスト


■read-variable-name
[Type       ]: Function
[Arguments  ]: read-variable-name PROMPT &key :default :history
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ミニバッファ
[Description]: 
ミニバッファにプロンプトを表示してユーザーが変数を入力するのを待ちます。
ユーザーの入力した変数のシンボルを返します。
(interactive "v") に相当します。

  PROMPT     : プロンプト
  :default   : 初期値とする文字列
  :history   : ヒストリのリスト


■realp
[Type       ]: Function
[Arguments  ]: realp OBJECT
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
OBJECT が real number なら t 、それ以外なら nil を返します。


■realpart
[Type       ]: Function
[Arguments  ]: realpart NUMBER
[Package    ]: lisp
[Seealso    ]: imagpart , complex
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
複素数の実数部を取得します。

使用例：
  (setq a (complex 1 3))
  =>#C(1 3)

  (realpart a)
  =>1


■recenter
[Type       ]: Function
[Arguments  ]: recenter &optional ARG
[Package    ]: editor
[File       ]: window.l
[Section    ]: ウィンドウ
[Description]: 
バッファをスクロールして画面上の表示位置を調整します。
引数を指定しなければ現在行が画面の中央に位置します。
(recenter 0)で現在行がウインドウの一番上に来ます。


■redo
[Type       ]: Function
[Arguments  ]: redo
[Package    ]: editor
[Seealso    ]: buffer-can-redo-p
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
元に戻した処理を再度実行します。[C-_],[S-End],[F12]

buffer-can-redo-p が t の時のみ実行可能です。


■reduce
[Type       ]: Function
[Arguments  ]: reduce FUNCTION SEQUENCE &key :from-end :start :end :initial-value
[Package    ]: lisp
[File       ]: sequence.l
[Section    ]: シーケンス
[Description]: 
2項演算子であるFUNCTIONで、SEQUENCEに対して畳み込みを行います。
  
  FUNCTION  : 2項演算子。
  :from-end : nil なら先頭から、non-nil なら最後の要素から畳み込みを行います。
  :start    : 畳み込みを行う SEQUENCE の開始インデックスです。デフォルトは 0 です。 
              :from-end が non-nil なら終了インデックスになります。
  :END      : 畳み込みを行う SEQUENCE の終了インデックスです。デフォルトは nil です。
              :from-end が non-nil なら開始インデックスになります。
  :INITIAL-VALUE : non-nil ならばこの値を初期値として使用します。

 (reduce #'- '(1 2 3)) = (- (- 1 2) 3)
 (reduce #'- '(1 2 3) :initial-value 10) = (- (- (- 10 1) 2) 3)
 (reduce #'- '(1 2 3) :from-end t :initial-value 10) = (- 1 (- 2 (- 3 10)))


■refresh-screen
[Type       ]: Function
[Arguments  ]: refresh-screen &optional F
[Package    ]: editor
[Seealso    ]: do-events , sit-for , sleep-for
[File       ]: builtin.l
[Section    ]: その他
[Description]: 
画面をリフレッシュします。
キー入力の方が画面の再描画よりも優先されます。従って、外部プロセスから非
同期に入力される文字列をバッファに出力したり、処理の途中でダイアログを表
示すると、画面が追いついていない場合があります。そのような場合に実行します。


■refresh-tool-bars
[Type       ]: Function
[Arguments  ]: refresh-tool-bars
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: メニュー
[Description]: 
ツールバーをリフレッシュします。
lisp/optprop.lの中から共通設定の変更内容を、ツールバーに反映するために用
いられています。


■regexp-keyword-list
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: 正規表現の表記
[Section    ]: 検索・正規表現
[Description]: 
正規表現を用いたキーワードの色分け機能です。キーワード長は256文
字程度らしいです。

使用例：
  (defvar *c-number-formats*
    (compile-regexp-keyword-list
     '(("\\(^\\|\\_S\\)\\(?:[0-9]+\\.[0-9]*\\|\\.[0-9]+\\)\\(?:e[-+]?[0-9]+\\)?[fl]?\\($\\|\\_S\\)"
        t (:keyword 0 :bold) nil -1 -2)
       ("\\_<[0-9]+e[-+]?[0-9]+[fl]?\\_>" t 1)
       ("\\_<\\([1-9][0-9]*\\|0[0-7]*\\|0x[0-9a-f]+\\)\\(u?l\\|l?u\\|u?i64\\)?\\_>"
        t (:color 1 2 :underline)))))
  (make-local-variable 'regexp-keyword-list)
  (setq regexp-keyword-list *c-number-formats*)

形式：
  (compile-regexp-keyword-list
   '((regexp1 case-fold color [ context [ begin [ end ] ] ] )
     (regexp2 case-fold color [ context [ begin [ end ] ] ] )
     ...
     (regexpN case-fold color [ context [ begin [ end ] ] ] )))

パラメタ：
  regexp  
      正規表現
  case-fold
      non-nil  正規表現のマッチングで大文字小文字を区別しない
      nil      正規表現のマッチングで大文字小文字を区別する
  color
      下の何れかの形式で指定します。
      keyword-color
          0-2       キーワードの1-3の色
          3-5       キーワードの1-3の色でそのキーワードだけ反転 
          6-8       キーワードの1-3の色でその行の端から端まで反転
          9         単なるbold 
          10-18     0-8と同じ色でbold
          :string   文字列の色 
          :comment  コメントの色 
          :tag      タグの色 
      (:keyword keyword-color [attributes])
          keyword-color
              keyword-colorの値
          attributes
              :bold        ボールド 
              :underline   アンダーライン 
              :strike-out  取り消し線 
              :line        一行まるごと 
      (:color foreground [background [attributes]]) 
          foreground
              0-15  前景色
          background 
              0     指定しない
              1-15  背景色
  context
      キーワードが有効な文脈を指定します。下のシンボルもしくは
      シンボルのリストを指定します。指定しない場合には、nilが指
      定されたものとして動作します。
      :string   文字列内部で有効
      :tag      タグの内部で有効
      :comment  コメントの内部で有効
      nil       上記以外で有効
      t         全ての文脈で有効
  begin
      マッチしたテキストの色を付ける部分の開始位置を指定します。
      0-9ならば(match-beginning begin)の位置からです。-1--9なら
      ば(match-end (- begin))の位置からです。指定しないかnilの場合に
      は(match-beginning 0)の位置からです。
  end
      マッチしたテキストの色を付ける部分の終了位置を指定します。
      0-9ならば(match-end end)の位置までです。-1--9ならば
      (match-beginning (- end))の位置までです。指定しないかnilの場合に
      は(match-end 0)の位置までです。


■regexp-quote
[Type       ]: Function
[Arguments  ]: regexp-quote REGEXP
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: 検索・正規表現
[Description]: 
REGEXPのメタ文字をエスケープした表現を返します。
例えば、「正規表現のメタ文字を含む文字列」を含む
正規表現で検索したい場合に便利です。
使用例：
  (regexp-quote "a+b*")
  =>"a\\+b\\*"


■regexpp
[Type       ]: Function
[Arguments  ]: regexpp OBJECT
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
指定されたOBJECTがコンパイル済み正規表現かを返します。

  t     OBJECTはコンパイル済み正規表現
  nil   OBJECTはコンパイル済み正規表現ではない


■register-history-variable
[Type       ]: Function
[Arguments  ]: register-history-variable VAR
[Package    ]: editor
[Seealso    ]: define-history-variable , unregister-history-variable
[File       ]: history.l
[Section    ]: 変数と定数
[Description]: 
すでに定義された変数 VAR をヒストリ変数に登録します。
ファイルに書き込まれるため、変数の内容は readable である必要があります。
readable であるとは、具体的に言うと「文字、文字列、数値、シンボルと
それらのリストで構成されるデータ」のことです。

  VAR : ヒストリ変数に登録する変数のシンボル、もしくはそれらのリスト


■rem
[Type       ]: Function
[Arguments  ]: rem NUMBER DIVISOR
[Package    ]: lisp
[Seealso    ]: truncate , mod
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
(truncate NUMBER DIVISOR)の戻り値の二つ目を返します。

使用例：  
  (rem 13 4)
  => 1
  (rem -13 4)
  => -1


■remhash
[Type       ]: Function
[Arguments  ]: remhash KEY HASH-TABLE
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: ハッシュ
[Description]: 
ハッシュテーブルの中からキーが一致するものを削除します。

  KEY        : 削除するキーを指定します。
  HASH-TABLE : ハッシュテーブルを指定します。

一致するキーが存在すれば削除してtを返します。
なければnilを返します。

使用例：
  (setq hash-table (make-hash-table))
  => #<hash table>
  (setf (gethash 'a hash-table) 1)
  => 1
  (remhash 'b hash-table)
  => nil
  (remhash 'a hash-table)
  => t


■remove
[Type       ]: Function
[Arguments  ]: remove ITEM SEQUENCE &key :from-end :test :test-not :start :end :count :key
[Package    ]: lisp
[Seealso    ]: delete
[File       ]: builtin.l
[Section    ]: シーケンス
[Description]: 
SEQUENCEの中でITEMと一致するものを削除したSEQUENCEを返します。
元のSEQUENCEはそのまま。元のSEQUENCEを変更したければ、deleteを使うこと。

  :count    : 削除する文字数を制限します。
  :from-end : :countが指定された場合にのみ意味を持ちます。
         nil    SEQUENCEの先頭から削除します。
         t      SEQUENCEの後尾から削除します。

使用例：
  ;;; removeとdeleteを使ってみる。
  (setq foo "abcabcdef")        => "abcabcdef"
  (remove #\b foo)              => "acacdef"
  foo                           => "abcabcdef"
  (delete #\b foo)              => "acacdef"
  foo                           => "acacdef"


■remove-duplicates
[Type       ]: Function
[Arguments  ]: remove-duplicates SEQUENCE &key :from-end :test :test-not (:start 0) :end (:key #'identity)
[Package    ]: lisp
[Seealso    ]: remove , delete-duplicates , remove
[File       ]: sequence.l
[Section    ]: シーケンス
[Description]: 
SEQUENCE の中から重複する要素を削除したシーケンスを返します。
remove 同様、元のシーケンスは変更されません。

  :from-end  non-nil ならシーケンスの終わりから重複する要素を削除していきます。


■remove-if
[Type       ]: Function
[Arguments  ]: remove-if PREDICATE SEQUENCE &key :from-end :start :end :count :key
[Package    ]: lisp
[Seealso    ]: delete-if
[File       ]: builtin.l
[Section    ]: シーケンス
[Description]: 
SEQUENCEの中でPREDICATEを満たすものを削除したSEQUENCEを返します。
元のSEQUENCEはそのまま。


■remove-if-not
[Type       ]: Function
[Arguments  ]: remove-if-not PREDICATE SEQUENCE &key :from-end :start :end :count :key
[Package    ]: lisp
[Seealso    ]: delete-if-not
[File       ]: builtin.l
[Section    ]: シーケンス
[Description]: 
SEQUENCEの中でPREDICATEを満たさないものを削除したSEQUENCEを返します。
元のSEQUENCEはそのままです。


■remove-trail-slash
[Type       ]: Function
[Arguments  ]: remove-trail-slash STRING
[Package    ]: editor
[Seealso    ]: append-trail-slash
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
STRINGの末尾に"/"があれば削除した文字列を返します。
使用例：
  (remove-trail-slash "ffjfj")
  =>"ffjfj"

  (remove-trail-slash "ffjfj/")
  =>"ffjfj"


■remprop
[Type       ]: Function
[Arguments  ]: remprop SYMBOL INDICATOR
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: シンボル
[Description]: 
シンボルのプロパティを削除します。

  SYMBOL    : プロパティを返すシンボル
  INDICATOR : プロパティのインジゲーター

使用例：
  ;;; 関数の説明を削除してみる。
  (defun foo (x) "increment" (1+ x))            => foo
  (get 'foo 'lisp::function-documentation)      => "increment"
  (remprop 'foo 'lisp::function-documentation)  => t
  (get 'foo 'lisp::function-documentation)      => nil


■rename
[Type       ]: Function
[Arguments  ]: rename FILENAME &optional NOWARN
[Package    ]: editor
[Seealso    ]: rename-buffer
[File       ]: buffer.l
[Section    ]: バッファ
[Description]: 
バッファに関連づけられたファイル名を変更します。バッファ名も同時に変更されます。
変更に成功したらnil以外の値を、失敗したらnilを返します。

使用例：
  ;;; カレントバッファのファイル名が"c:/foo.baz"に変更されます。
  ;;; 同時に、バッファ名も"foo.baz"になります。
  (rename "c:/foo.baz")


■rename-buffer
[Type       ]: Function
[Arguments  ]: rename-buffer BUFFER-NAME &optional BUFFER
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
ファイル名は変えずにバッファ名だけを変更します。

--- muleの説明 ---
この関数は、カレントバッファを buffer-name にリネームします。 

buffer-name がストリングでなかったりその名前のバッファがすでに存在している場
合、エラーになります。 nil を返します。


■rename-file
[Type       ]: Function
[Arguments  ]: rename-file FILE NEW-NAME &key :if-exists :if-access-denied
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
ファイル名を変更します。
  
  FILE              : 変更前のファイル名を指定します。
  NEW-NAME          : 変更後のファイル名を指定します。
  :if-exists        : ファイルが存在する場合の動作を指定します。
        :error          エラーを出力します。
        :skip           エラーは出力せず、nilを返します。
        :overwrite      強制的にファイル名の変更を試みます。
  :if-access-denied : アクセスが拒否された場合の動作を指定します。
        :error          エラーを出力します。
        :skip           エラーは出力せず、nilを返します。

変更できたかどうかで戻り値が変わります。

  t   変更に成功
  nil 変更に失敗

使用例：
  (rename-file "C:/xyzzy/test.txt" "C:/xyzzy/test2.txt")
  => t


■rename-pseudo-frame
[Type       ]: Function
[Arguments  ]: rename-pseudo-frame NAME
[Package    ]: editor
[File       ]: pframe.l
[Section    ]: ウィンドウ
[Description]: 
現在選択しているフレームの名前を NAME に変更します。


■repeat-backward-search
[Type       ]: Function
[Arguments  ]: repeat-backward-search
[Package    ]: editor
[Seealso    ]: repeat-forward-search , search-forward-again , re-search-forward-again
[File       ]: search.l
[Section    ]: 検索・正規表現
[Description]: 
前回検索した文字列を再度後方検索します。[S-F5]

前回の検索が正規表現によるものであれば正規表現を使って、そうでなければ
そのように実行されます。


■repeat-complex-command
[Type       ]: Function
[Arguments  ]: repeat-complex-command SEXP
[Package    ]: editor
[File       ]: cmds.l
[Section    ]: ミニバッファ
[Description]: 
execute-extended-command（いわゆるM-x）でのコマンド実行をそのままの引数
で再度実行します。[ESC p]


■repeat-forward-search
[Type       ]: Function
[Arguments  ]: repeat-forward-search
[Package    ]: editor
[Seealso    ]: repeat-backward-search , search-forward-again , re-search-forward-again
[File       ]: search.l
[Section    ]: 検索・正規表現
[Description]: 
前回検索した文字列を再度前方検索します。[F5]

前回の検索が正規表現によるものであれば正規表現を使って、そうでなければ
そのように実行されます。


■replace
[Type       ]: Function
[Arguments  ]: replace SEQUENCE1 SEQUENCE2 &key :start1 :end1 :start2 :end2
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: シーケンス
[Description]: 
SEQUENCE1 を SEQUENCE2 で置換します。元の SEQUENCE は置き換えられます。
SEQUENCE1 の :start1-:end1 の位置に、 SEQUENCE2 の :start2-:end2 を挿入
します。

使用例：
  (setq foo (make-sequence 'string 8 :initial-element #\a))
  => "aaaaaaaa"
  (setq bar (make-sequence 'string 3 :initial-element #\b))
  => "bbb"
  (replace foo bar)
  => "bbbaaaaa"
  (replace foo bar :start1 4 :end1 5)
  => "bbbabaaa"


■replace-buffer
[Type       ]: Function
[Arguments  ]: replace-buffer PATTERN REPLACEMENT &key :case-fold :tail :regexp :left-bound :right-bound :once :literal :last-match
[Package    ]: editor
[Seealso    ]: replace-string , perform-replace , substitute-string , gresreg , 正規表現の表記
[File       ]: builtin.l
[Section    ]: 検索・正規表現
[Description]: 
バッファ中の文字列を検索して置換します。replace-stringもperform-replace
もこれを使って実装されています。

使用例：
 ;;;  英字と漢字の間に空白を１つあける
 (replace-buffer "\\([A-Za-z0-9_]\\) *\\([\X8200-\X9fff\Xe000-\Xfcff]\\)"
    "\\1 \\2" :regexp t)


■replace-match
[Type       ]: Function
[Arguments  ]: replace-match STRING &key :literal
[Package    ]: editor
[Seealso    ]: replace-buffer , match-data , store-match-data
[File       ]: builtin.l
[Section    ]: 検索・正規表現
[Description]: 
直前の検索結果に基づいて、 STRING にあるメタ文字を解釈しつつ文字列を置き換
えます。 :literal が nil 以外の場合は、メタ文字を意識しません。

メタ文字：
   \0, \&    一致した文字列全体
   \1 〜 \9  正規表現検索での\(\)に対応する文字列

使用例：
  ;;; <!--文字列-->を[文字列]に置き換える場合
  (when (scan-buffer "<!--\\(.+\\)-->" :regexp t)
    (replace-match "[\\1]"))
  => t


■replace-string
[Type       ]: Function
[Arguments  ]: replace-string PATTERN REPLACEMENT &optional NOERROR
[Package    ]: editor
[Seealso    ]: query-replace , replace-buffer , substitute-string
[File       ]: search.l
[Section    ]: 検索・正規表現
[Description]: 
バッファを検索して文字列で置換します。perform-replaceを使って実装されて
います。

  PATTERN     : 置換前文字列です。
  REPLACEMENT : 置換後文字列です。
  NOERROR     : 文字列が見つからないときにエラーを出す？

replace系の関数の系譜：
  replace-string         ：interactiveな関数として宣言されている。
    └perform-replace    ：普通はこれで十分の筈
        └replace-buffer ：いろいろと細かく設定したければこれで行う。

使用例：
  (defun test-proc ()
    (interactive)
    (replace-string "aaa" "xxx"))   ;; aaaをxxxに置換

--- muleの説明 ---
Command: replace-string string replacement &optional delimited

この関数は、 string の出現部分(訳注：occurrences)を replacement で置き換えます。


■require
[Type       ]: Function
[Arguments  ]: require MODULE-NAME &optional PATHNAME
[Package    ]: lisp
[Seealso    ]: load-library , provide , *modules*
[File       ]: evalmacs.l
[Section    ]: 評価
[Description]: 
指定したモジュールを読み込みます。既に読込済みであれば何もしません。

--- 原文 ---
Description: the argument module-name, which can be a string or a symbol 
(in which case the print name of the symbol is used), should be the name 
of some Lisp subsystem, which may or may not be already in the Lisp image. 
require checks to see if it has been loaded by looking for it on the list 
which is the value of *modules*. The test is case-sensitive. If the module 
name is not on the *modules* list, require tries to load it into Lisp. 
If pathname is present as a single pathname or a list of pathnames, require 
loads those files in order. If the argument pathname is not present, 
require attempts to load the file named module-name (or the print name 
of module-name if it is a symbol). If the module is already present, 
require returns nil. It is an error if the files cannot be loaded for any 
reason. Note that module-name is typically a symbol and, since symbol 
print names rarely also name files, it is recommended that pathname be 
supplied. 

互換性：
  Common Lispにはあり。
  muleにはなさそう。

使用例：
  (require "foreign")


■resolve-shortcut
[Type       ]: Function
[Arguments  ]: resolve-shortcut PATHNAME
[Package    ]: editor
[Seealso    ]: create-shortcut
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
ショートカットからファイル名を求めます。

  PATHNAME : ショートカットを指定します。

使用例：
  (resolve-shortcut "d:/winnt/profiles/henmi2/personal/my documentsへのショートカット.lnk")
  => "G:/My Documents"


■rest
[Type       ]: Function
[Arguments  ]: rest LIST
[Package    ]: lisp
[Seealso    ]: cdr
[File       ]: evalmacs.l
[Section    ]: リスト
[Description]: 
cdrの別名です。 
全く同じ動きをします。 

使用例： 
  ;;; cdrと同じ動きをする。 
  (cdr '(1 2 3))
  => (2 3)
  (rest '(1 2 3))
  => (2 3)
  (symbol-function 'cdr)
  => #<function: cdr>
  (symbol-function 'rest)
  => #<function: cdr>
 
参考： 
  ;;; evalmacs.lの定義
  (si:*fset 'rest #'cdr)


■restore-window-configuration-register
[Type       ]: Function
[Arguments  ]: restore-window-configuration-register R
[Package    ]: editor
[Seealso    ]: save-window-configuration-to-register
[File       ]: register.l
[Section    ]: ウィンドウ
[Description]: 
レジスタ R に保存したウィンドウ状態に戻します。
R に window-configuration が入っていないとエラーになります。


■return
[Type       ]: Macro
[Arguments  ]: return &optional RESULT
[Package    ]: lisp
[Seealso    ]: return-from
[File       ]: evalmacs.l
[Section    ]: 制御構造
[Description]: 
指定された値でブロックから脱出します。
catchしてくれるブロックがないと例外が発生します。

  (return RESULT) = (return-from nil RESULT)

使用例：
  ;;; ループからの脱出の場合
  (loop (if (yes-or-no-p "quit?") (return 123)))
  => 123

  ;;; ブロックが無いのでcatchできない場合
  (if (yes-or-no-p "quit?") (return 123))
  => `return-from'のキャッチャを参照できません: nil


■return-from
[Type       ]: Special Form
[Arguments  ]: return-from NAME [RESULT]
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 制御構造
[Description]: 
ブロックから脱出します。
--- 原文 ---
Description: used to terminate the evaluation of the block construct with 
name NAME. The name argument is not evaluated and must be a symbol. When 
return-from is encountered the result-form is evaluated if present and 
evaluation of the block is terminated. The block returns the value returned 
by the result-form or nil if no result-form is present. If name is nil, 
return-from can be used to terminate the evaluation of do  and prog 
constructs that automatically create a block called nil to enclose their 
argument forms.

Example:

(block fred
  (setq x 10)
  (loop (incf x) (if (> x 20) (return-from fred x))))
 21


■revappend
[Type       ]: Function
[Arguments  ]: revappend X Y
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: リスト
[Description]: 
X を反転させて Y をくっつけます。

  (revappend x y) == (append (reverse x) y)
  
revappendの方が効率が良いようです。


■reverse
[Type       ]: Function
[Arguments  ]: reverse SEQUENCE
[Package    ]: lisp
[Seealso    ]: nreverse
[File       ]: builtin.l
[Section    ]: シーケンス
[Description]: 
SEQUENCEを逆順にした新しいSEQUENCEを作成して返します。元のsequenceはそのままです。


■reverse-region
[Type       ]: Function
[Arguments  ]: reverse-region FROM TO &optional TEMPORARY
[Package    ]: editor
[Seealso    ]: clear-reverse-region
[File       ]: builtin.l
[Section    ]: リージョン
[Description]: 
リージョンを反転表示します。
TEMPORARYがnon nilならば、次のキー入力で反転表示が元に戻ります。


■rewind-ime-composition
[Type       ]: Function
[Arguments  ]: rewind-ime-composition &optional NODELETE POP
[Package    ]: editor
[File       ]: kanji.l
[Section    ]: 文字列
[Description]: 
直前に IME で変換した文字列を非確定状態に戻します。[C-c C-c]
変換直後でなければ、直前に変換した文字列を非確定状態で挿入します。


■rotatef
[Type       ]: Macro
[Arguments  ]: rotatef {PLACE}*
[Package    ]: lisp
[Seealso    ]: setf , shiftf
[File       ]: setf.l
[Section    ]: 変数と定数
[Description]: 
引数として与えられた値の格納場所の内容をローテーションさせます。
(rotatef a b c d)とすると以下のようになります。

        ┌a ┐  ┌b ┐  ┌c ┐
実行前：│ 1│  │ 2│  │ 3│
        └┬┘  └┬┘  └┬┘
      ┌─┘  ┌─┘  ┌─┘
   (*)┘  ┌─┘  ┌─┘  ┌─(*)
          ↓      ↓      ↓
        ┌a ┐  ┌b ┐  ┌c ┐
実行後：│ 2│  │ 3│  │ 1│
        └─┘  └─┘  └─┘

--- 原文 ---
Description: similar to shiftf except that the value accessed by the 
form place1 is not discarded. Instead it is assigned to the location 
accessed by the form placeN. Therefore, the list of place forms is 
treated like a circular register that is rotated by one position. 
Returns nil As in the case of setf and psetf, the ANSI standard 
specifies that one can rotatef more than one value to a place which has 
more than one store variable and which has an appropriately defined 
setf-method.

--- 意訳 ---
1番目のフォームによって参照される値が捨てられないことを除いてshiftfと同
じです。その代わりに、N番目のフォームによって参照される位置に、1番目のフ
ォームによって参照される値が設定されます。そのため、フォームのリストは環
状のレジスタとして扱われます。setfとpsetfによってはnilを返す場合がありま
すが、ANSIでは、setfにより適切に定義されたひとつ以上の格納用の変数に値を
入れるようにrotatefができると定められています。

使用例：
  ;;; a b cに数値を入れてrotatefする。
  (setq a 1 b 2 c 3)    => 3
  (list a b c)          => (1 2 3)
  (rotatef a b c)       => 1
  (list a b c)          => (2 3 1)


■round
[Type       ]: Function
[Arguments  ]: NUMBER &optional DIVISOR
[Package    ]: lisp
[Seealso    ]: floor , ceiling , truncate
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
NUMBERを近い方の整数に丸めます。
ちょうど0.5の場合には偶数方向に丸められます。

使用例： 
  (round 2.5)
  => 2
  (round 2.6)
  => 3
  (round 3.5)
  => 4
  (round -2.5)
  => -2
  (round -2.6)
  => -3
  (multiple-value-list (round 2.5))
  => (2 0.5)


■row-major-aref
[Type       ]: Function
[Arguments  ]: row-major-aref ARRAY INDEX
[Package    ]: lisp
[Seealso    ]: aref , svref , array-row-major-index
[File       ]: builtin.l
[Section    ]: 配列
[Description]: 
ARRAY を一次元の配列とみなしたときに、INDEX 番目になる要素を返します。

使用例:
  (setf x (make-array '(2 3) :initial-contents '((a b c) (d e f))))
  => #2A((a b c) (d e f))
  (row-major-aref x 0)
  => a
  (row-major-aref x 2)
  => c
  (row-major-aref x 3)
  => d


■rplaca
[Type       ]: Function
[Arguments  ]: rplaca X Y
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: リスト
[Description]: 
リスト X の car を Y に置き換えて、置き換えた X を返します。
(progn (setf (car X) Y) X)と同じでしょうか。

使用例：
  ;;; 置き換えてみる。
  (setq g '(a b c)) 
  => (a b c)
  (rplaca (cdr g) 'd)
  => (d c) 
  g
  => (a d c)


■rplacd
[Type       ]: Function
[Arguments  ]: rplacd X Y
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: リスト
[Description]: 
リスト X の cdr を Y に置き換えて、置き換えた X を返します。
(progn (setf (cdr X) Y) X)と同じでしょうか。

使用例：
  ;;; 置き換えてみる。
  (setq x '(a b c)) 
  (rplacd x 'd)
  => (a . d) 
  x
  => (a . d)


■run-hook-with-args
[Type       ]: Function
[Arguments  ]: run-hook-with-args HOOK &rest ARGS
[Package    ]: editor
[Seealso    ]: run-hooks
[File       ]: builtin.l
[Section    ]: モード
[Description]: 
run-hooksと同じように関数を実行します。run-hooksと異なり引数を
  指定できます。


■run-hook-with-args-until-success
[Type       ]: Function
[Arguments  ]: run-hook-with-args-until-success HOOK &rest ARGS
[Package    ]: editor
[Seealso    ]: run-hook-with-args , run-hook-with-args-while-success
[File       ]: builtin.l
[Section    ]: モード
[Description]: 
run-hooksと同じように関数を実行します。run-hooksと異なり復帰値
  がnon-nilになるまで順番に実行します。


■run-hook-with-args-while-success
[Type       ]: Function
[Arguments  ]: run-hook-with-args-while-success HOOK &rest ARGS
[Package    ]: editor
[Seealso    ]: run-hook-with-args , run-hook-with-args-until-success
[File       ]: builtin.l
[Section    ]: モード
[Description]: 
run-hooksと同じように関数を実行します。run-hooksと異なり復帰値
  がnon-nilの間だけ順番に実行します。


■run-hooks
[Type       ]: Function
[Arguments  ]: run-hooks &rest HOOKLIST
[Package    ]: editor
[Seealso    ]: run-hook-with-args , run-hook-with-args-until-success , run-hook-with-args-while-success
[File       ]: builtin.l
[Section    ]: モード
[Description]: 
フック変数を順番に実行します。フック変数の詳細はadd-hookを参照して下さい。

  HOOKLIST : フック変数を指定します。複数個並べて書けます。
             並べて書いた順番に実行します。

フック変数の実行には引数をつけることが出来ません。
どうしてもつけたい場合には、run-hook-with-argsを使いましょう。

使用例：
  ;;; c-mode.l
  (run-hooks 'c-mode-hook)


■safe-caaaar
[Type       ]: Function
[Arguments  ]: safe-caaaar X
[Package    ]: lisp
[Seealso    ]: safe-car
[File       ]: list.l
[Section    ]: リスト
[Description]: 
safe-caaaar を返します。

  (safe-caaaar X) = (safe-car (safe-car (safe-car (safe-car X))))


■safe-caaadr
[Type       ]: Function
[Arguments  ]: safe-caaadr X
[Package    ]: lisp
[Seealso    ]: safe-car , safe-cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
safe-caaadr を返します。

  (safe-caaadr X) = (safe-car (safe-car (safe-car (safe-cdr X))))


■safe-caaar
[Type       ]: Function
[Arguments  ]: safe-caaar X
[Package    ]: lisp
[Seealso    ]: safe-car
[File       ]: list.l
[Section    ]: リスト
[Description]: 
safe-caaar を返します。

  (safe-caaar X) = (safe-car (safe-car (safe-car X)))


■safe-caadar
[Type       ]: Function
[Arguments  ]: safe-caadar X
[Package    ]: lisp
[Seealso    ]: safe-car , safe-cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
safe-caadar を返します。

  (safe-caadar X) = (safe-car (safe-car (safe-cdr (safe-car X))))


■safe-caaddr
[Type       ]: Function
[Arguments  ]: safe-caaddr X
[Package    ]: lisp
[Seealso    ]: safe-car , safe-cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
safe-caaddr を返します。

  (safe-caaddr X) = (safe-car (safe-car (safe-cdr (safe-cdr X))))


■safe-caadr
[Type       ]: Function
[Arguments  ]: safe-caadr X
[Package    ]: lisp
[Seealso    ]: safe-car , safe-cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
safe-caadr を返します。

  (safe-caadr X) = (safe-car (safe-car (safe-cdr X)))


■safe-caar
[Type       ]: Function
[Arguments  ]: safe-caar X
[Package    ]: lisp
[Seealso    ]: safe-car
[File       ]: list.l
[Section    ]: リスト
[Description]: 
safe-caar を返します。

  (safe-caar X) = (safe-car (safe-car X))


■safe-cadaar
[Type       ]: Function
[Arguments  ]: safe-cadaar X
[Package    ]: lisp
[Seealso    ]: safe-car , safe-cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
safe-cadaar を返します。

  (safe-cadaar X) = (safe-car (safe-cdr (safe-car (safe-car X))))


■safe-cadadr
[Type       ]: Function
[Arguments  ]: safe-cadadr X
[Package    ]: lisp
[Seealso    ]: safe-car , safe-cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
safe-cadadr を返します。

  (safe-cadadr X) = (safe-car (safe-cdr (safe-car (safe-cdr X))))


■safe-cadar
[Type       ]: Function
[Arguments  ]: safe-cadar X
[Package    ]: lisp
[Seealso    ]: safe-car , safe-cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
safe-cadar を返します。

  (safe-cadar X) = (safe-car (safe-cdr (safe-car X)))


■safe-caddar
[Type       ]: Function
[Arguments  ]: safe-caddar X
[Package    ]: lisp
[Seealso    ]: safe-car , safe-cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
safe-caddar を返します。

  (safe-caddar X) = (safe-car (safe-cdr (safe-cdr (safe-car X))))


■safe-cadddr
[Type       ]: Function
[Arguments  ]: safe-cadddr X
[Package    ]: lisp
[Seealso    ]: safe-car , safe-cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
safe-cadddr を返します。

  (safe-cadddr X) = (safe-car (safe-cdr (safe-cdr (safe-cdr X))))


■safe-caddr
[Type       ]: Function
[Arguments  ]: safe-caddr X
[Package    ]: lisp
[Seealso    ]: safe-car , safe-cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
safe-caddr を返します。

  (safe-caddr X) = (safe-car (safe-cdr (safe-cdr X)))


■safe-cadr
[Type       ]: Function
[Arguments  ]: safe-cadr X
[Package    ]: lisp
[Seealso    ]: safe-car , safe-cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
safe-cadr を返します。

  (safe-cadr X) = (safe-car (safe-cdr X))


■safe-car
[Type       ]: Function
[Arguments  ]: safe-car X
[Package    ]: lisp
[Seealso    ]: car
[File       ]: list.l
[Section    ]: リスト
[Description]: 
(car X) は X が nil か cons でなければエラーになります
しかし safe-car はエラーを発生せずに nil を返します。

使用例：
  ;;; carとsafe-carの違い
  (car "abc")
  => 不正なデータ型です: "abc": cons
  (safe-car "abc")
  => nil


■safe-cdaaar
[Type       ]: Function
[Arguments  ]: safe-cdaaar X
[Package    ]: lisp
[Seealso    ]: safe-car , safe-cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
safe-cdaaar を返します。

  (safe-cdaaar X) = (safe-cdr (safe-car (safe-car (safe-car X))))


■safe-cdaadr
[Type       ]: Function
[Arguments  ]: safe-cdaadr X
[Package    ]: lisp
[Seealso    ]: safe-car , safe-cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
safe-cdaadr を返します。

  (safe-cdaadr X) = (safe-cdr (safe-car (safe-car (safe-cdr X))))


■safe-cdaar
[Type       ]: Function
[Arguments  ]: safe-cdaar X
[Package    ]: lisp
[Seealso    ]: safe-car , safe-cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
safe-cdaar を返します。

  (safe-cdaar X) = (safe-cdr (safe-car (safe-car X)))


■safe-cdadar
[Type       ]: Function
[Arguments  ]: safe-cdadar X
[Package    ]: lisp
[Seealso    ]: safe-car , safe-cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
safe-cdadar を返します。

  (safe-cdadar X) = (safe-cdr (safe-car (safe-cdr (safe-car X))))


■safe-cdaddr
[Type       ]: Function
[Arguments  ]: safe-cdaddr X
[Package    ]: lisp
[Seealso    ]: safe-car , safe-cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
safe-cdaddr を返します。

  (safe-cdaddr X) = (safe-cdr (safe-car (safe-cdr (safe-cdr X))))


■safe-cdadr
[Type       ]: Function
[Arguments  ]: safe-cdadr X
[Package    ]: lisp
[Seealso    ]: safe-car , safe-cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
safe-cdadr を返します。

  (safe-cdadr X) = (safe-cdr (safe-car (safe-cdr X)))


■safe-cdar
[Type       ]: Function
[Arguments  ]: safe-cdar X
[Package    ]: lisp
[Seealso    ]: safe-car , safe-cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
safe-cdar を返します。

  (safe-cdar X) = (safe-cdr (safe-car X))


■safe-cddaar
[Type       ]: Function
[Arguments  ]: safe-cddaar X
[Package    ]: lisp
[Seealso    ]: safe-car , safe-cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
safe-cddaar を返します。

  (safe-cddaar X) = (safe-cdr (safe-cdr (safe-car (safe-car X))))


■safe-cddadr
[Type       ]: Function
[Arguments  ]: safe-cddadr X
[Package    ]: lisp
[Seealso    ]: safe-car , safe-cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
safe-cddadr を返します。

  (safe-cddadr X) = (safe-cdr (safe-cdr (safe-car (safe-cdr X))))


■safe-cddar
[Type       ]: Function
[Arguments  ]: safe-cddar X
[Package    ]: lisp
[Seealso    ]: safe-car , safe-cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
safe-cddar を返します。

  (safe-cddar X) = (safe-cdr (safe-cdr (safe-car X)))


■safe-cdddar
[Type       ]: Function
[Arguments  ]: safe-cdddar X
[Package    ]: lisp
[Seealso    ]: safe-car , safe-cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
safe-cdddar を返します。

  (safe-cdddar X) = (safe-cdr (safe-cdr (safe-cdr (safe-car X))))


■safe-cddddr
[Type       ]: Function
[Arguments  ]: safe-cddddr X
[Package    ]: lisp
[Seealso    ]: safe-cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
safe-cddddr を返します。

  (safe-cddddr X) = (safe-cdr (safe-cdr (safe-cdr (safe-cdr X))))


■safe-cdddr
[Type       ]: Function
[Arguments  ]: safe-cdddr X
[Package    ]: lisp
[Seealso    ]: safe-cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
safe-cdddr を返します。

  (safe-cdddr X) = (safe-cdr (safe-cdr (safe-cdr X)))


■safe-cddr
[Type       ]: Function
[Arguments  ]: safe-cddr X
[Package    ]: lisp
[Seealso    ]: safe-cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
safe-cddr を返します。

  (safe-cddr X) = (safe-cdr (safe-cdr X))


■safe-cdr
[Type       ]: Function
[Arguments  ]: safe-cdr X
[Package    ]: lisp
[Seealso    ]: cdr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
(cdr X) は X が nil か cons でなければエラーになります
しかし safe-cdr はエラーを発生せずに nil を返します。


■save-excursion
[Type       ]: Special Form
[Arguments  ]: save-excursion {FORM}*
[Package    ]: editor
[Seealso    ]: save-window-excursion , save-restriction , set-goal-column
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
処理の前後でカレントバッファとポイントを保存します。ウィンドウのレイアウ
トは保存しないので注意してください。

ウィンドウのレイアウトも保存したい場合には、save-window-excursionを使います。

--- muleの説明 --- 
この特殊フォームは、カレントバッファのポイントとマークをセーブし、 forms 
を評価し、ポイントとマークをリストアします。 (throw や error による) 異
常 exit の場合もポイントとマークの値をリストアします。マーカーはバッファ
中のポジションとともにそのバッファも指しているため、マークをリストアする
ことは (Emacs の) カレントバッファの notion (訳注：??) もリストアするこ
とになります。 

カレントバッファの notion を変更しなくてはいけない場合や、カレントバッフ
ァのポイントを動かさなくてはいけない場合、カレントバッファとポイントをリ
ストアできるようにするのは (標準的な)方法です。 

別のバッファのポイントやマークはセーブされません。このため(それらの)ポイ
ントやマークに対する変更は save-excursion の exit 後も保持されます。 

save-excursion は、switch-to-buffer のような関数で破壊されたウィンドウと 
バッファの対応はリストアしません。 selected ウィンドウをリストアする方法
の 1つは save-excursion 中で save-window-excursion を用いることです(セク
ショ ン 25.11 [save-window-excursion]、ページ 248 参照)。 

返される値は(最後に)評価されたフォームの返す値か、フォームが与えられてい
ない場合 nil になります。


■save-restriction
[Type       ]: Special Form
[Arguments  ]: save-restriction {FORM}*
[Package    ]: editor
[Seealso    ]: narrow-to-region , save-excursion
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
narrow-to-regionする前の状態を保存します。ポイントやバッファの位置は保存
しません。ポイントやバッファの位置を保存したい場合には、save-excursionを
使用します。

特定の処理の前後でrestrictionの状態とポイントの両方を保存したい場合には、
以下の様にします。

  ;;; うまくいく書き方
  (save-excursion (save-restriction ... )) 

以下の様に書いてしまった場合、処理の中でrestrictionを掛けると内側の
save-excursionでのポイントの復元がうまくいかないことがあります。注意しま
しょう。

  ;;; うまくいかないことがある書き方
  (save-restriction (save-excursion ... ))

使用例：
    ;;; この時点では narrow-to-region してないとする。
    (save-restriction
      (narrow-to-region FROM-1 TO-1)             ; FROM-1からTO-1に制限する
      (save-restriction
        (narrow-to-region FROM-2 TO-2)           ; FROM-2からTO-2に制限する
        (msgbox "~A ~A" (point-min) (point-max))
      )                                          ; FROM-1からTO-1に制限されている
                                                 ; 状態に戻る
      (msgbox "~A ~A" (point-min) (point-max))
    )                                            ; 制限されなくなる
    (msgbox "~A ~A" (point-min) (point-max))


■save-some-buffers
[Type       ]: Function
[Arguments  ]: save-some-buffers &optional VERBOSE (FN #'WRITE-FILE)
[Package    ]: editor
[File       ]: files.l
[Section    ]: ファイルシステム
[Description]: 
開いているバッファを保存します。
  VERBOSE : non-nilの場合保存するファイルごとにダイアログを表示して確認します。


■save-window-configuration-to-register
[Type       ]: Function
[Arguments  ]: save-window-configuration-to-register R
[Package    ]: editor
[Seealso    ]: restore-window-configuration-register , current-window-configuration
[File       ]: register.l
[Section    ]: ウィンドウ
[Description]: 
レジスタ R に現在のウィンドウの状態を保存します。
中身は current-window-configuration で得られるものと同じです。
保存した状態に戻すには restore-window-configuration-register を使います。


■save-window-excursion
[Type       ]: Special Form
[Arguments  ]: save-window-excursion {FORM}*
[Package    ]: editor
[Seealso    ]: save-excursion , with-selected-window
[File       ]: builtin.l
[Section    ]: ウィンドウ
[Description]: 
処理の前後でカレントウィンドウとウィンドウのレイアウトの状態を保存します。


■scan-buffer
[Type       ]: Function
[Arguments  ]: scan-buffer PATTERN &key :no-dup :case-fold :reverse :tail :regexp :limit :left-bound :right-bound :last-match
[Package    ]: editor
[Seealso    ]: regexpp , compile-regexp , match-beginning , match-end , perform-replace , markerp , make-marker , set-marker , skip-chars-forward , 正規表現の表記
[File       ]: builtin.l
[Section    ]: 検索・正規表現
[Description]: 
バッファを検索します。

  PATTERN      : 検索パターンとして、[文字列]、[正規表現]、[コンパイル済
                 み正規表現]の何れかを指定する。
                 コンパイル済み正規表現の場合は :regexp の値は無視する。
                 また :case-fold 指定も無視され、compile-regexp 時の第2
                 引数の指定が用いられる。

  :no-dup      : 検索方向に対して次のポイントからの検索を指定する。
        nil     - 現在のポイントから検索する。
        non-nil - reverse が nil の場合は、次のポイントから検索する。
                  non-nil の場合は、前のポイントから検索する。

  :case-fold   : ASCII 文字の大文字小文字の区別の方法を指定する。
                 PATTERN が[コンパイル済み正規表現]の場合は、:case-fold
                 指定は意味をもたない。
        nil     - 大文字小文字を区別して検索する。
        :smart  - PATTERN に大文字が含まれていない場合、大文字小文字を区
                  別せずに検索する。
        上記以外- 大文字小文字を区別せずに検索する。

  :reverse     : 検索方向を指定する。
        nil     - バッファの末尾に向かって検索する。
        non-nil - バッファの先頭に向かって検索する。

  :tail        : 検索成功後の移動先ポイントをどこにするかを指定する。
        nil     - 検索成功後、マッチ範囲の先頭((match-beginning 0)のポイ
                  ント)に移動する。
                  bar を検索した場合、:tail が nil なら
                      foo bar baz qux quux ...
                          ^ ポイントはここに移動する。
        non-nil - 検索成功後、マッチ範囲の末尾((match-end 0)のポイント)
                  に移動する。
                  bar を検索した場合、:tail が non-nil なら
                     foo bar baz qux quux ...
                            ^ ポイントはここに移動する。

  :regexp      : PATTERN が [正規表現] であることを指定する。
                 PATTERN が[コンパイル済み正規表現]の場合は、:regexp 指
                 定は意味をもたない。
        nil     - PATTERN を[文字列]とみなす。
        non-nil - PATTERN を[正規表現]とみなす。

  :limit       : 検索範囲をポイント位置で制限する。 
                 文字数制限ではない。
        nil     - 制限なし。
        INTEGER - :reverse が nil の場合は、マッチ末尾文字のポイントが
                  INTEGER 未満となる範囲で検索する。non-nil の場合は、
                  マッチ先頭文字のポイントが INTEGER 以上となる範囲で検
                  索する。
        MARKER  - MARKER に設定されたポイントを上記 INTEGER と見なし検索
                  範囲を制限する。
                  MARKER にポイントが設定されていない((marker-point
                   MARKER) が nil)場合、scan-buffer は nil を返す。
        上記以外- type-error が発生される。

  :left-bound  : [文字列]検索時の左側境界マッチ条件を指定する。
                 正規表現検索の場合は無効。
        nil     - 左側境界に関わらずマッチ成立
        :symbol - マッチ範囲左側境界((match-beginning 0)のポイント)が、
                  以下の何れかの条件を満たせばマッチ成立
                    - バッファの先頭である
                    - バッファの末尾である
                  マッチ範囲左側境界のポイント、もしくは、その前のポイン
                  トの文字が、以下の何れかの条件を満たせばマッチ成立
                    - ASCII 文字でない
                    - syntax-table に word,symbol として登録されていない
                      ((syntax-word-p 文字), (syntax-symbol-p 文字) が
                       nil を返す。)
        上記以外- マッチ範囲左側境界((match-beginning 0)のポイント)が、
                  以下の何れかの条件を満たせばマッチ成立
                    - バッファの先頭である
                    - バッファの末尾である
                  マッチ範囲左側境界のポイント、もしくは、その前のポイン
                  トの文字が、以下の何れかの条件を満たせばマッチ成立
                    - ASCII 文字でない
                    - syntax-table に word として登録されていない
                      ((syntax-word-p 文字)がnilを返す。)

  :right-bound : [文字列]検索時の右側境界マッチ条件を指定する。
                 正規表現検索の場合は無効。
        nil     - 右側境界に関わらずマッチ成立
        :symbol - マッチ範囲右側境界((match-end 0)のポイント)が、以下の
                  何れかの条件を満たせばマッチ成立
                    - バッファの先頭である
                    - バッファの末尾である
                  マッチ範囲右側境界のポイント、もしくは、その前のポイン
                  トの文字が、以下の何れかの条件を満たせばマッチ成立
                    - ASCII 文字でない
                    - syntax-table に word,symbol として登録されていない
                      ((syntax-word-p 文字), (syntax-symbol-p 文字) が
                       nil を返す。)
        上記以外- マッチ範囲右側境界((match-end 0)のポイント)が、以下の
                  何れかの条件を満たせばマッチ成立
                    - バッファの先頭である
                    - バッファの末尾である
                  マッチ範囲右側境界のポイント、もしくは、その前のポイン
                  トの文字が、以下の何れかの条件を満たせばマッチ成立
                    - ASCII 文字でない
                    - syntax-table に word として登録されていない
                      ((syntax-word-p 文字) が nil を返す。)

  :last-match  : 使用効果不明
                 (perform-replace) でのみ用いられている。
                 (<last-match> . <last-match-char>) からなる。
                 <last-match> : 直前のscan-buffer成功時の
                     (match-beginning 0)のポイントを指定
                 <last-match-char>: 直前のscan-buffer成功時の
                     (match-end 0)の前のポイントの文字を指定

戻り値は以下のとおりです。

  t    検索に成功
  nil  検索に失敗

使用例：
  (scan-buffer 検索文字列 :regexp t)
  (scan-buffer 検索文字列 :tail t)
  (scan-buffer 検索文字列 :limit 3000)
  (scan-buffer 検索文字列 :reverse t)
  (scan-buffer 検索文字列 :regexp t :no-dup t)


■schar
[Type       ]: Function
[Arguments  ]: schar SIMPLE-STRING INDEX
[Package    ]: lisp
[Seealso    ]: simple-string
[File       ]: builtin.l
[Section    ]: 文字列
[Description]: 
SIMPLE-STRINGのINDEX番目の文字を返します。
INDEXは0を基底とします。

使用例：
  ;;; simpleでないstringでscharを使ってみる。
  (setq foo (make-vector 10 :initial-element #\a :element-type 'character :fill-pointer 3))
                        => "aaa"
  (schar foo 0)         => 不正なデータ型です: "aaa": simple-string
  (setq bar "aaa")      => "aaa"
  (schar bar 0)         => #\a


■screen-height
[Type       ]: Function
[Arguments  ]: screen-height
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ウィンドウ
[Description]: 
xyzzyのウィンドウ全体の高さが何行になるのかを返します。


■screen-width
[Type       ]: Function
[Arguments  ]: screen-width
[Package    ]: editor
[Seealso    ]: screen-height
[File       ]: builtin.l
[Section    ]: ウィンドウ
[Description]: 
xyzzyのウィンドウ全体の幅が何桁になるのかを返します。


■scroll-down-both-window
[Type       ]: Function
[Arguments  ]: scroll-down-both-window
[Package    ]: editor
[File       ]: cmds.l
[Section    ]: ウィンドウ
[Description]: 
現在のウィンドウと、次のウィンドウを同時に下スクロールします。[S-C-Up]


■scroll-down-other-window
[Type       ]: Function
[Arguments  ]: scroll-down-other-window &optional (ARG 1)
[Package    ]: editor
[Seealso    ]: scroll-window
[File       ]: cmds.l
[Section    ]: ウィンドウ
[Description]: 
次のウィンドウを指定行数分上スクロールします。


■scroll-left
[Type       ]: Function
[Arguments  ]: scroll-left &optional ARG
[Package    ]: editor
[Seealso    ]: scroll-right , scroll-window-horizontally
[File       ]: cmds.l
[Section    ]: ウィンドウ
[Description]: 
ウィンドウを指定桁数分、左にスクロールします。[C-x <]
負の数値を指定すると逆方向にスクロールします。

補足:
  version 0.2.2.234 では方向が逆になっています。


■scroll-other-window
[Type       ]: Function
[Arguments  ]: scroll-other-window &optional ARG
[Package    ]: editor
[Seealso    ]: scroll-window
[File       ]: cmds.l
[Section    ]: ウィンドウ
[Description]: 
次のウィンドウをスクロールします。
ARG が nil なら下スクロールし、 non-nil であれば上スクロールします。


■scroll-right
[Type       ]: Function
[Arguments  ]: scroll-right &optional ARG
[Package    ]: editor
[Seealso    ]: scroll-left , scroll-window-horizontally
[File       ]: cmds.l
[Section    ]: ウィンドウ
[Description]: 
ウィンドウを指定桁数分、右にスクロールします。[C-x >]
負の数値を指定すると逆方向にスクロールします。

補足:
  version 0.2.2.234 では方向が逆になっています。


■scroll-up-both-window
[Type       ]: Function
[Arguments  ]: scroll-up-both-window
[Package    ]: editor
[File       ]: cmds.l
[Section    ]: ウィンドウ
[Description]: 
現在のウィンドウと、次のウィンドウを同時に上スクロールします。[S-C-Down]


■scroll-up-other-window
[Type       ]: Function
[Arguments  ]: scroll-up-other-window &optional (ARG 1)
[Package    ]: editor
[Seealso    ]: scroll-window
[File       ]: cmds.l
[Section    ]: ウィンドウ
[Description]: 
次のウィンドウを指定行数分スクロールします。


■scroll-window
[Type       ]: Function
[Arguments  ]: scroll-window ARG
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ウィンドウ
[Description]: 
ウィンドウを指定行数分スクロールします。
負の数値を指定すると逆方向にスクロールします。

使用例：
  ;;; 0.3秒おきに1行ずつスクロールさせる。
  (dotimes (i 4) (scroll-window 1) (sit-for .3))
  => nil
(scroll-window n)


■scroll-window-horizontally
[Type       ]: Function
[Arguments  ]: scroll-window-horizontally ARG
[Package    ]: editor
[Seealso    ]: scroll-window
[File       ]: builtin.l
[Section    ]: ウィンドウ
[Description]: 
ウィンドウを指定桁数分、右にスクロールします。
負の数値を指定すると逆方向にスクロールします。


■search-backward
[Type       ]: Function
[Arguments  ]: search-backward PATTERN &optional NOERROR
[Package    ]: editor
[Seealso    ]: search-forward
[File       ]: search.l
[Section    ]: 検索・正規表現
[Description]: 
後方検索をします。[C-r]

  PATTERN: 検索文字列
  NOERROR: 文字列が見つからなかったときの動作を指定します。
        t   nil を返します。
        nil エラーメッセージを出力します。


■search-backward-again
[Type       ]: Function
[Arguments  ]: search-backward-again
[Package    ]: editor
[Seealso    ]: ed::*last-search-string* , search-forward-again
[File       ]: search.l
[Section    ]: 検索・正規表現
[Description]: 
前回の検索語で後方検索します。


■search-forward
[Type       ]: Function
[Arguments  ]: search-forward PATTERN &optional NOERROR
[Package    ]: editor
[Seealso    ]: search-backward
[File       ]: search.l
[Section    ]: 検索・正規表現
[Description]: 
前方検索をします。[C-s]

  PATTERN: 検索文字列
  NOERROR: 文字列が見つからなかったときの動作を指定します。
        t   nil を返します。
        nil エラーメッセージを出力します。


■search-forward-again
[Type       ]: Function
[Arguments  ]: search-forward-again
[Package    ]: editor
[Seealso    ]: ed::*last-search-string* , search-backward-again
[File       ]: search.l
[Section    ]: 検索・正規表現
[Description]: 
前回の検索語で前方検索します。


■second
[Type       ]: Function
[Arguments  ]: second X
[Package    ]: lisp
[Seealso    ]: first , cadr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
cadrの別名です。
全く同じ動きをします。

使用例：
  ;;; cadrと同じ動きをする。
  (cadr '(1 2 3))
  => 2
  (second '(1 2 3))
  => 2
  (symbol-function 'cadr)
  => #<lexical-closure: cadr>
  (symbol-function 'second)
  => #<lexical-closure: cadr>
 
参考：
  ;;; list.lの定義
  (si:*fset 'second #'cadr)


■select-buffer
[Type       ]: Function
[Arguments  ]: select-buffer
[Package    ]: editor
[Seealso    ]: buffer-menu
[File       ]: buffer.l
[Section    ]: バッファ
[Description]: 
バッファを選択するダイアログを表示します。
デフォルトではC-p/C-nで上下し、C-mで選択します。
buffer-menuのようなバッファの削除などはできません。
※正確には*std-control-xxx-char*の設定に依ります。


■select-pseudo-frame
[Type       ]: Function
[Arguments  ]: select-pseudo-frame FRAME
[Package    ]: editor
[Seealso    ]: フレームの概要 , switch-pseudo-frame , pseudo-frame-selector , find-pseudo-frame , new-pseudo-frame , *select-pseudo-frame-hook*
[File       ]: pframe.l
[Section    ]: ウィンドウ
[Description]: 
フレーム FRAME を選択します。

FRAME のスロット selected-fn に関数が設定されている場合、それを funcall します。
最後に *select-pseudo-frame-hook* を実行します。


■selected-buffer
[Type       ]: Function
[Arguments  ]: selected-buffer
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
現在操作中のバッファ（カレントバッファ）を返します。

使用例：
  (selected-buffer)
  => #<buffer: reference.xml>

互換性：
  この関数はmuleにはありません。
  muleでのcurrent-bufferに相当します。


■selected-pseudo-frame
[Type       ]: Function
[Arguments  ]: selected-pseudo-frame
[Package    ]: editor
[File       ]: pframe.l
[Section    ]: ウィンドウ
[Description]: 
現在選択しているフレームを返します。


■selected-window
[Type       ]: Function
[Arguments  ]: selected-window
[Package    ]: editor
[Seealso    ]: set-window
[File       ]: builtin.l
[Section    ]: ウィンドウ
[Description]: 
現在アクティブなウィンドウを返します。

使用例：
  ;;; 現在のウィンドウを返してみる。
  (selected-window)
  => #<window 54137832>


■selection-backward-char
[Type       ]: Function
[Arguments  ]: selection-backward-char &optional (ARG 1)
[Package    ]: editor
[File       ]: select.l
[Section    ]: リージョン
[Description]: 
後方の文字までをセレクションにします。[S-Left]


■selection-backward-word
[Type       ]: Function
[Arguments  ]: selection-backward-word &optional (ARG 1)
[Package    ]: editor
[Seealso    ]: selection-forward-word
[File       ]: select.l
[Section    ]: リージョン
[Description]: 
後方の単語までをセレクションにします。[S-C-Left]


■selection-beginning-of-buffer
[Type       ]: Function
[Arguments  ]: selection-beginning-of-buffer
[Package    ]: editor
[Seealso    ]: beginning-of-buffer , selection-end-of-buffer
[File       ]: select.l
[Section    ]: リージョン
[Description]: 
カーソル位置からバッファの先頭までをセレクションにします。
beginning-of-bufferと違いマーク自体は変化しません。


■selection-beginning-of-line
[Type       ]: Function
[Arguments  ]: selection-beginning-of-line
[Package    ]: editor
[Seealso    ]: beginning-of-line , selection-end-of-line
[File       ]: select.l
[Section    ]: リージョン
[Description]: 
行頭までをセレクションにします。


■selection-beginning-of-virtual-line
[Type       ]: Function
[Arguments  ]: selection-beginning-of-virtual-line
[Package    ]: editor
[Seealso    ]: beginning-of-virtual-line , selection-end-of-virtual-line
[File       ]: select.l
[Section    ]: リージョン
[Description]: 
表示行の先頭までをセレクションにします。


■selection-end-of-buffer
[Type       ]: Function
[Arguments  ]: selection-end-of-buffer
[Package    ]: editor
[Seealso    ]: end-of-buffer , selection-beginning-of-buffer
[File       ]: select.l
[Section    ]: リージョン
[Description]: 
バッファの最後までをセレクションにします。
end-of-bufferと違いマーク自体は変化しません。


■selection-end-of-line
[Type       ]: Function
[Arguments  ]: selection-end-of-line
[Package    ]: editor
[Seealso    ]: selection-beginning-of-line , end-of-line
[File       ]: select.l
[Section    ]: リージョン
[Description]: 
行末までをセレクションにします。


■selection-end-of-virtual-line
[Type       ]: Function
[Arguments  ]: selection-end-of-virtual-line
[Package    ]: editor
[Seealso    ]: end-of-virtual-line , selection-beginning-of-virtual-line
[File       ]: select.l
[Section    ]: リージョン
[Description]: 
表示行の末尾までをセレクションにします。


■selection-forward-char
[Type       ]: Function
[Arguments  ]: selection-forward-char &optional (ARG 1)
[Package    ]: editor
[File       ]: select.l
[Section    ]: リージョン
[Description]: 
前方の文字までをセレクションにします。[S-Right]


■selection-forward-word
[Type       ]: Function
[Arguments  ]: selection-forward-word &optional (ARG 1)
[Package    ]: editor
[Seealso    ]: selection-backward-word
[File       ]: select.l
[Section    ]: リージョン
[Description]: 
前方の単語までをセレクションにします。[S-C-Right]


■selection-mark
[Type       ]: Function
[Arguments  ]: selection-mark
[Package    ]: editor
[Seealso    ]: selection-point
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
セレクションの開始のポイントを返します。


■selection-next-page
[Type       ]: Function
[Arguments  ]: selection-next-page &optional (ARG 1)
[Package    ]: editor
[Seealso    ]: selection-previous-page
[File       ]: select.l
[Section    ]: リージョン
[Description]: 
次ページまでをセレクションにします。[S-PageDown]


■selection-next-virtual-line
[Type       ]: Function
[Arguments  ]: selection-next-virtual-line &optional (ARG 1)
[Package    ]: editor
[File       ]: select.l
[Section    ]: リージョン
[Description]: 
次の表示行までをセレクションにします。[S-Down]


■selection-paragraph
[Type       ]: Function
[Arguments  ]: selection-paragraph
[Package    ]: editor
[File       ]: paragrph.l
[Section    ]: リージョン
[Description]: 
段落をセレクションにします。


■selection-point
[Type       ]: Function
[Arguments  ]: selection-point
[Package    ]: editor
[Seealso    ]: selection-mark
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
セレクションの終端のポイントを返します。


■selection-previous-page
[Type       ]: Function
[Arguments  ]: selection-previous-page &optional (ARG 1)
[Package    ]: editor
[Seealso    ]: selection-next-page
[File       ]: select.l
[Section    ]: リージョン
[Description]: 
前ページまでをセレクションにします。[S-PageUp]


■selection-previous-virtual-line
[Type       ]: Function
[Arguments  ]: selection-previous-virtual-line &optional (ARG 1)
[Package    ]: editor
[File       ]: select.l
[Section    ]: リージョン
[Description]: 
前の表示行までをセレクションにします。[S-Up]


■selection-start-end
[Type       ]: Macro
[Arguments  ]: selection-start-end (START END) &body BODY
[Package    ]: editor
[Seealso    ]: ed::get-selection-start-end
[File       ]: select.l
[Section    ]: リージョン
[Description]: 
セレクションの開始位置、終了位置を取得します。
セレクションが存在すれば、
局所的にSTARTに開始位置、ENDに終了位置をセットされた環境を作り
BODYを順次評価します。

使用例:
  ;;; セレクションに含まれる文字列を返します。
  (selection-start-end (start end)
    (buffer-substring start end))
  =>"foo"


■selection-whole-buffer
[Type       ]: Function
[Arguments  ]: selection-whole-buffer
[Package    ]: editor
[File       ]: select.l
[Section    ]: リージョン
[Description]: 
バッファ全体をセレクションにします。


■self-insert-command
[Type       ]: Function
[Arguments  ]: self-insert-command &optional (ARG 1)
[Package    ]: editor
[Seealso    ]: *auto-fill-hook
[File       ]: cmds.l
[Section    ]: テキスト
[Description]: 
最後に入力されたキー*last-command-char*を挿入モードの如何により
insert/overwrite-charします。
括弧が入力された時に強調表示がなされるのもこの中での作用です。


■sequencep
[Type       ]: Function
[Arguments  ]: sequencep OBJECT
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
OBJECT が sequence なら t 、そうでなければnilを返します。


■set
[Type       ]: Function
[Arguments  ]: set SYMBOL VALUE
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 変数と定数
[Description]: 
シンボルに値を束縛します。

  SYMBOL : シンボル名
  VALUE  : 設定する値

使用例：
  ;;; fooというシンボルに値を束縛してみる。
  (boundp 'foo)         => nil
  (set 'foo 2)          => 2
  (boundp 'foo)         => t
  foo                   => 2


■set-buffer
[Type       ]: Function
[Arguments  ]: set-buffer BUFFER
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
バッファを選択します。

--- muleの説明 ---
この関数は、 buffer をカレントバッファにしますが、このバッファを今 
select されているウィンドウに表示することはしません。これは(Emacs が)コ
マンドレベルに戻ると(すぐに) select されているウィンドウのバッファが(再
び)カレントになることを意味しています。 

この関数は、(カレントバッファ以外のバッファでエディットを行なう)コマンド
を書く際に用いられます。 buffer で示されるバッファを返します。 

buffer が(既存の)バッファを指さない場合、エラーになります。


■set-buffer-alternate-file-name
[Type       ]: Function
[Arguments  ]: set-buffer-alternate-file-name NAME &optional BUFFER
[Package    ]: editor
[Seealso    ]: get-buffer-alternate-file-name , set-buffer-file-name
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
バッファBUFFERにファイル名の別名NAMEをつけます。set-buffer-file-nameでは、
ありえないパスを指定するとエラーになります。
set-buffer-alternate-file-nameではどのような文字列でも指定可能です。

使用例：
  ; c:/abc/は存在しないパス
  (set-buffer-file-name "c:/abc/def.txt")
  => c:/abc/def.txt
     指定されたパスが見つかりません。 

  ; URLでもなんでも任意の文字列を設定可
  (set-buffer-alternate-file-name "http://www.asahi.com")
  => t

指定した文字列は、バッファのファイル名がnilの場合（つまり、
get-buffer-file-nameの戻り値がnilの場合）に限り、
以下の個所で使用されます

  1)select-bufferで表示されるダイアログのファイル名
  2)mode-line-format/title-bar-formatのファイル名


■set-buffer-colors
[Type       ]: Function
[Arguments  ]: set-buffer-colors COLORS &optional BUFFER
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
バッファの色を設定します。設定した色は現状のバッファにだけ適用されます。

  COLORS : BGRを表す数値をベクタで指定します。


■set-buffer-eol-code
[Type       ]: Function
[Arguments  ]: set-buffer-eol-code CODE &optional BUFFER
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: 変数と定数
[Description]: 
バッファの改行コードを設定します。
引数として改行コードの種類を表す定数が用意されています。
昔は、set-buffer-newline-codeという名称でしたが、xyzzy 0.2.0.121 からこ
の名前に変更されました。

  CODE：バッファの改行コードの種類を指定します。
        LFの場合        *eol-lf*        0
        CRLFの場合      *eol-crlf*      1
        CRの場合        *eol-cr*        2

使用例：
  ;;; バッファの改行コードをLFに変更する。
  (set-buffer-eol-code *eol-lf*)
  => t

参考：
  Changelogのxyzzy 0.2.0.121を参照のこと


■set-buffer-file-name
[Type       ]: Function
[Arguments  ]: set-buffer-file-name FILE-NAME &optional BUFFER
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
バッファと結び付けられているファイルをFILE-NAMEにします。


■set-buffer-fileio-encoding
[Type       ]: Function
[Arguments  ]: set-buffer-fileio-encoding CODE &optional BUFFER
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
バッファの漢字コードをCODEにします。設定した漢字コードは
buffer-fileio-encodingで参照することができます。

  CODE   : 漢字コードを指定します。
  BUFFER : 変更するバッファを指定します。

使用例：
  (set-buffer-fileio-encoding *encoding-sjis*)
  (set-buffer-fileio-encoding *encoding-euc-jp*)
  (set-buffer-fileio-encoding *encoding-jis*)
  (set-buffer-fileio-encoding *encoding-utf8*)

参照：
  kanji.l


■set-buffer-fold-type-column
[Type       ]: Function
[Arguments  ]: set-buffer-fold-type-column
[Package    ]: editor
[Seealso    ]: set-buffer-fold-type-window , set-buffer-fold-type-none
[File       ]: window.l
[Section    ]: バッファ
[Description]: 
カレントバッファを指定位置で折り返しします。


■set-buffer-fold-type-column-update
[Type       ]: Function
[Arguments  ]: set-buffer-fold-type-column-update
[Package    ]: editor
[Seealso    ]: set-buffer-fold-type-column
[File       ]: window.l
[Section    ]: バッファ
[Description]: 
カレントバッファが指定位置で折り返しになっているかどうかを返します。

戻り値は以下のとおりです。
  :check  なっている
  nil     なっていない


■set-buffer-fold-type-none
[Type       ]: Function
[Arguments  ]: set-buffer-fold-type-none
[Package    ]: editor
[Seealso    ]: set-buffer-fold-type-window , set-buffer-fold-type-column
[File       ]: window.l
[Section    ]: バッファ
[Description]: 
カレントバッファを折り返しなしにします。


■set-buffer-fold-type-none-update
[Type       ]: Function
[Arguments  ]: set-buffer-fold-type-none-update
[Package    ]: editor
[Seealso    ]: set-buffer-fold-type-none
[File       ]: window.l
[Section    ]: バッファ
[Description]: 
カレントバッファが折り返し無しになっているかどうかを返します。

戻り値は以下のとおりです。
  :check  なっている
  nil     なっていない


■set-buffer-fold-type-window
[Type       ]: Function
[Arguments  ]: set-buffer-fold-type-window
[Package    ]: editor
[Seealso    ]: set-buffer-fold-type-none , set-buffer-fold-type-column
[File       ]: window.l
[Section    ]: バッファ
[Description]: 
カレントバッファをウィンドウ幅で折り返します。


■set-buffer-fold-type-window-update
[Type       ]: Function
[Arguments  ]: set-buffer-fold-type-window-update
[Package    ]: editor
[Seealso    ]: set-buffer-fold-type-window
[File       ]: window.l
[Section    ]: バッファ
[Description]: 
カレントバッファがウィンドウ幅で折り返しになっているかどうかを返します。

戻り値は以下のとおりです。
  :check  なっている
  nil     なっていない


■set-buffer-fold-width
[Type       ]: Function
[Arguments  ]: set-buffer-fold-width WIDTH &optional BUFFER
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: テキスト
[Description]: 
テキストの折り返し方法を制御します。[ツール]-[ローカル設定]-[表示]の"テ
キストの折り返し"と同じで、現在のバッファだけに影響します。

  WIDTH  : 折り返しの方法を指定します。
        nil     折り返しません。
        t       ウィンドウの幅で折り返します。
        数値    折り返し位置を指定します。
  BUFFER : ローカル設定するバッファを指定します。


■set-buffer-modified-p
[Type       ]: Function
[Arguments  ]: set-buffer-modified-p FLAG &optional BUFFER
[Package    ]: editor
[Seealso    ]: buffer-modified-p
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
バッファが変更されたかどうかのフラグを設定します。

  FLAG   : フラグを指定します。
        t       変更されている状態にします。
        nil     変更が存在しない状態にします。
  BUFFER : 対象のバッファ

使用例： 
  ;;; 変更フラグの設定・クリア
  (set-buffer-modified-p t)
  (set-buffer-modified-p nil)


■set-default
[Type       ]: Function
[Arguments  ]: set-default SYMBOL VALUE
[Package    ]: lisp
[Seealso    ]: setq-default
[File       ]: builtin.l
[Section    ]: 変数と定数
[Description]: 
この関数は、ただ 1つの symbol と 1 つの value のみを許す点と、その両方を
評価する点とを除き setq-default と同じです (setq-default 参照)。

使用例：
  (set-default (car '(a b c)) 23)
  => 23


■set-default-directory
[Type       ]: Function
[Arguments  ]: set-default-directory DIRECTORY &optional BUFFER
[Package    ]: editor
[Seealso    ]: default-directory
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
バッファが作業しているディレクトリを変更します。

  DIRECTORY : ディレクトリを指定します。
  BUFFER    : バッファを指定します。
              指定がなければカレントバッファになります。


■set-default-fold-width
[Type       ]: Function
[Arguments  ]: set-default-fold-width WIDTH
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ウィンドウ
[Description]: 
テキストの折り返し方法を制御します。[ツール]-[共通設定]-[表示]の"テキス
トの折り返し"と同じで、全体に影響します。

  WIDTH : 折り返しの方法を指定します。
        nil     折り返しません。
        t       ウィンドウの幅で折り返します。
        数値    折り返し位置を指定します。


■set-difference
[Type       ]: Function
[Arguments  ]: set-difference LIST1 LIST2 &rest REST &key :test :test-not :key
[Package    ]: lisp
[Seealso    ]: nset-difference
[File       ]: list.l
[Section    ]: リスト
[Description]: 
二つのリストの差を返します。

--- 原文 ---
Description: Copies list1 and list2 and returns the 
elements of list1 that do not match any element in list2 using the test 
specified by the :test or :test-not argument. The order of the elements 
in the returned list may not reflect their relative positions within 
list1.

--- 意訳 ---
set-difference は LIST1 と LIST2 をコピーして、LIST2 に一致しない LIST1 
の要素を返します。一致のテストは :test 及び :test-not の引数で指定します。
返されるリストの要素の順番は、LIST1 の順番を保証しません。

使用例：
  (set-difference  '(3 6 9) '(2 4 6 8 10))
  => (9 3)


■set-exclusive-or
[Type       ]: Function
[Arguments  ]: set-exclusive-or LIST1 LIST2 &rest REST &key :test :test-not :key
[Package    ]: lisp
[Seealso    ]: nset-exclusive-or
[File       ]: list.l
[Section    ]: リスト
[Description]: 
LIST1 と LIST2 のいずれか一方にのみ含まれる要素のリストを作って返します。
nset-exclusive-or と違い元のリストは変更されません。

使用例:
  (set-exclusive-or '(1 3 5 7 9) '(2 3 5 7 11))
  => (9 1 11 2)


■set-extended-key-translate-table
[Type       ]: Function
[Arguments  ]: set-extended-key-translate-table KEY C
[Package    ]: editor
[File       ]: keyboard.l
[Section    ]: キーマップ
[Description]: 
通常は同時押しができないキーを別のキーに振り向けるテーブルです。

| c-modeでシフトを押しながらTABを押した時に
| インデントしてもらおうと思ったんですが、
| #\TABを#\S-TABにしたらSHIFTは使えませんとのことで。

残念ながらまともな手段では Shift+Tab は使えません。が、まともでない手
段が用意されています。

  (set-extended-key-translate-table exkey-S-tab #\F20)

このようにしておくと、Shift+Tab が押されたときに F20 が押されたふりをするので

  (global-set-key #\F20 'foo)

とすればお望み通り(^^

exkey-... に指定できるのは以下の通り。

  exkey-space
  exkey-S-space
  exkey-C-space
  exkey-S-C-space
  exkey-M-space
  exkey-S-M-space
  exkey-C-M-space
  exkey-S-C-M-space
                   
  exkey-backspace
  exkey-S-backspace
  exkey-C-backspace
  exkey-S-C-backspace
  exkey-M-backspace
  exkey-S-M-backspace
  exkey-C-M-backspace
  exkey-S-C-M-backspace
  
  exkey-tab
  exkey-S-tab
  exkey-C-tab
  exkey-S-C-tab
  
  exkey-return
  exkey-S-return
  exkey-C-return
  exkey-S-C-return
  exkey-M-return
  exkey-S-M-return
  exkey-C-M-return
  exkey-S-C-M-return
  
  exkey-escape
  exkey-S-escape

  exkey-zenkaku
  exkey-S-zenkaku
  exkey-C-zenkaku
  exkey-S-C-zenkaku
  exkey-S-M-zenkaku


■set-file-write-time
[Type       ]: Function
[Arguments  ]: set-file-write-time FILENAME UNIVERSAL-TIME
[Package    ]: lisp
[Seealso    ]: file-write-time , decode-universal-time , format-date-string
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
ファイルの最終更新日を変更します。

  FILENAME       : ファイル名を指定します。フルパスでなければ
                   (default-directory)からの相対パスになります。
  UNIVERSAL-TIME : 最終更新日をユニバーサルタイム形式で指定します。


■set-fill-column
[Type       ]: Function
[Arguments  ]: set-fill-column &optional (COL (CURRENT-COLUMN))
[Package    ]: editor
[Seealso    ]: fill-column
[File       ]: fill.l
[Section    ]: ポジション
[Description]: 
詰め込み桁数を指定します。
指定された値は、変数 fill-column に代入されます。

  COL : 詰め込み桁数
        引数がない場合は、現在のカーソル位置の桁数を詰め込み桁数に設定し
        ます。


■set-fill-prefix
[Type       ]: Function
[Arguments  ]: set-fill-prefix
[Package    ]: editor
[File       ]: fill.l
[Section    ]: その他
[Description]: 
行頭からポイントまでをfill prefixに設定します。行頭で実行された
場合には、fill prefixはクリアされます。auto-fill-modeでは、折り
返しが行なわれると行頭にfill prefixが挿入されます。


■set-function-bar-label
[Type       ]: Function
[Arguments  ]: set-function-bar-label CHAR LABEL
[Package    ]: editor
[Seealso    ]: set-number-of-function-bar-labels
[File       ]: builtin.l
[Section    ]: キーマップ
[Description]: 
ファンクションバーのラベルを変更します。

  CHAR  : 各ファンクファンクションバーに対応したキャラクタ
  LABEL : 表示するラベル

使用例
  (global-set-key #\F3 'search-forward-again)
  => t
  (set-function-bar-label #\F3 "次検索")
  => t


■set-goal-column
[Type       ]: Function
[Arguments  ]: set-goal-column COLUMN
[Package    ]: editor
[Seealso    ]: goal-column
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
ゴールカラムを設定します。save-excursionしてもgoal-columnが破壊されない
ように使用するぐらいでしょうか。

使用例：
  ;;; goal-columnを大事にして編集してみる。
  (let ((g (goal-column)))
    (save-excursion ... )
    (set-goal-column g))
  => t


■set-local-window-flags
[Type       ]: Function
[Arguments  ]: set-local-window-flags WINDOW-OR-BUFFER FLAGS ON-OR-OFF
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ウィンドウ
[Description]: 
ウィンドウもしくはバッファの各種表示を制御します。

 BUFFER-OR-WINDOW : バッファかウィンドウのいずれかを指定します。
 FLAG             : 下のフラグのどれかを指定します。
        *window-flag-alternate-vscroll-bar* バッファ全体表示できている
                                            場合の垂直スクロールバー
        *window-flag-cursor-line*           行カーソル
        *window-flag-eof*                   EOF
        *window-flag-fold-line*             折り返しライン
        *window-flag-fold-mark*             折り返し
        *window-flag-full-width-space*      全角スペース
        *window-flag-half-width-space*      半角スペース
        *window-flag-hscroll-bar*           水平スクロールバー
        *window-flag-just-inverse*          （詳細不明）
        *window-flag-line-number*           行番号
        *window-flag-mode-line*             モード行
        *window-flag-newline*               改行
        *window-flag-ruler*                 ルーラ
        *window-flag-scrolling*             描画位置の計算でジャンプスクロール
        *window-flag-tab*                   タブ
        *window-flag-vscroll-bar*           垂直スクロールバー
        *window-flag-zenkaku-space*         全角スペース
 ON-OR-OFF       : 変更後の値を設定します。
        t        フラグをonにします。
        nil      フラグをoffにします。
        それ以外 デフォルトに戻します。

使用例：
  ;;; カレントバッファの行番号を表示しないようにする。
  (set-local-window-flags (selected-buffer)
                          *window-flag-line-number* nil)


■set-macro-character
[Type       ]: Function
[Arguments  ]: set-macro-character CHAR FUNCTION &optional NON-TERMINATING-P READTABLE
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 入出力
[Description]: 
（詳細不明）

使用例：
  (set-macro-character #\? 'read-test)
  (defun read-test (stream ch)
    (list '*question* (read stream)))


■set-mark
[Type       ]: Function
[Arguments  ]: set-mark &optional POINT
[Package    ]: editor
[Seealso    ]: mark , set-mark-command
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
ポイントの位置にマークを設定します。

  POINT: マークを設定する位置を指定します。
         範囲外の値を指定してもエラーにはならないようです。


■set-mark-command
[Type       ]: Function
[Arguments  ]: set-mark-command
[Package    ]: editor
[File       ]: cmds.l
[Section    ]: ポジション
[Description]: 
マークを設定します。
ビルトイン関数のset-markを対話に行うためのものです。

使用例：
  ;;; マークを設定してその位置を取得する。
  (set-mark-command)
  => t
  (mark)
  => 2554


■set-marker
[Type       ]: Function
[Arguments  ]: set-marker MARKER &optional POINT
[Package    ]: editor
[Seealso    ]: make-marker , unset-marker
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
マーカーにポジションを設定します。
POINT が nil の場合は現在の位置を設定します。

  POINT : マーカーに設定する位置

使用例：
  (setq m (make-marker))
  => #<marker: *scratch*: ->
  (set-marker m)
  => #<marker: *scratch*: 62>
  (marker-point m)
  => 62


■set-menu
[Type       ]: Function
[Arguments  ]: set-menu MENU
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: メニュー
[Description]: 
指定されたメニューをデフォルトのメニューにします。xyzzy上部に常時表示さ
れるようになります。

  MENU : 設定するメニューを指定します。
         メニューが不要ならばnilを指定します。


■set-minor-mode-map
[Type       ]: Function
[Arguments  ]: set-minor-mode-map KEYMAP &optional BUFFER
[Package    ]: editor
[Seealso    ]: unset-minor-mode-map
[File       ]: builtin.l
[Section    ]: モード
[Description]: 
マイナーモード用のキーマップを設定します。


■set-number-of-function-bar-labels
[Type       ]: Function
[Arguments  ]: set-number-of-function-bar-labels N
[Package    ]: editor
[Seealso    ]: number-of-function-bar-labels
[File       ]: builtin.l
[Section    ]: その他
[Description]: 
ファンクションバーのラベルの数を設定します。指定できる数は、
4/5/8/10/12/15です。


■set-per-device-directory
[Type       ]: Function
[Arguments  ]: set-per-device-directory DIRECTORY
[Package    ]: lisp
[Seealso    ]: *auto-update-per-device-directory*
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
ドライブ毎のデフォルトのディレクトリを設定します。ドライブ毎のデ
フォルトのディレクトリは、ファイラ等で移動すると毎回更新されます。
更新されたくない場合には、*auto-update-per-device-directory*をnil
に設定します。

使用例：
  (set-per-device-directory "D:/foo/bar")
  (set-per-device-directory "E:/bar/foo")


■set-process-eol-code
[Type       ]: Function
[Arguments  ]: set-process-eol-code PROCESS CODE
[Package    ]: editor
[Seealso    ]: process-eol-code
[File       ]: builtin.l
[Section    ]: プロセス
[Description]: 
PROCESSで処理する場合の改行コードCODEを設定します。


■set-process-filter
[Type       ]: Function
[Arguments  ]: set-process-filter PROCESS FILTER
[Package    ]: editor
[Seealso    ]: process-filter , set-process-outcode , set-process-incode , set-process-sentinel , process-send-string
[File       ]: builtin.l
[Section    ]: プロセス
[Description]: 
プロセスの出力を加工するためのフィルタを指定します。


■set-process-incode
[Type       ]: Function
[Arguments  ]: set-process-incode PROCESS CODE
[Package    ]: editor
[Seealso    ]: set-process-outcode
[File       ]: builtin.l
[Section    ]: プロセス
[Description]: 
プロセスからset-process-filterに入力がある場合の漢字コードを指定します。


■set-process-outcode
[Type       ]: Function
[Arguments  ]: set-process-outcode PROCESS CODE
[Package    ]: editor
[Seealso    ]: set-process-incode
[File       ]: builtin.l
[Section    ]: プロセス
[Description]: 
プロセスに対してsend-process-stringをする場合の漢字コードを指定します。


■set-process-sentinel
[Type       ]: Function
[Arguments  ]: set-process-sentinel PROCESS SENTINEL
[Package    ]: editor
[Seealso    ]: process-sentinel , set-process-filter
[File       ]: builtin.l
[Section    ]: プロセス
[Description]: 
プロセスが終了する場合に呼ばれる関数（いわゆるSENTINEL）を指定します。


■set-syntax-comment-column
[Type       ]: Function
[Arguments  ]: set-syntax-comment-column SYNTAX-TABLE COLUMN
[Package    ]: editor
[Seealso    ]: syntax-table
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
指定された列に#\SPC以外のキャラクタがある場合にコメント行と見な
します。特定のキャラクタだけにしたい場合には、
set-syntax-optionを参照して下さい。
  
使用例：
  ;;; cobol-mode.lの定義
  (set-syntax-comment-column *cobol-mode-syntax-table* 6)


■set-syntax-end-c++-comment
[Type       ]: Function
[Arguments  ]: set-syntax-end-c++-comment SYNTAX-TABLE CHAR &optional PARSE-SEXP-IGNORE-COMMENT-P
[Package    ]: editor
[Seealso    ]: syntax-end-c++-comment-p
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
文字CHARをC++スタイルのコメントの終了文字として規定します。
開始文字と異なり、終了文字は同じ文字を二つ連ねません。

使用例：
  ;;; cc-mode.l
  (set-syntax-end-c++-comment *c++-mode-syntax-table* #\LFD)


■set-syntax-end-comment
[Type       ]: Function
[Arguments  ]: set-syntax-end-comment SYNTAX-TABLE CHAR &optional PARSE-SEXP-IGNORE-COMMENT-P MAYBE-COMMENT-END-P
[Package    ]: editor
[Seealso    ]: syntax-end-comment-p
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
文字CHARをコメント終了文字として規定します。

使用例：
  ;;; perl.l
  (set-syntax-end-comment *perl-mode-syntax-table* #\LFD)


■set-syntax-end-multi-comment
[Type       ]: Function
[Arguments  ]: set-syntax-end-multi-comment SYNTAX-TABLE STRING
[Package    ]: editor
[Seealso    ]: set-syntax-start-multi-comment
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
文字列STRINGをSYNTAX-TABLEに複数行のコメント終了を表す文字列として規定します。

使用例：
  ;;; c-mode.lの定義
  (set-syntax-end-multi-comment *c-mode-syntax-table* "*/")


■set-syntax-escape
[Type       ]: Function
[Arguments  ]: set-syntax-escape SYNTAX-TABLE CHAR
[Package    ]: editor
[Seealso    ]: syntax-escape-p
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
文字CHARをエスケープ文字として規定します。
文字列中に限らず次の一文字の構文上の機能を抑制します。

使用例：
  ;;; c-mode.l
  (set-syntax-escape *c-mode-syntax-table* #\\)


■set-syntax-junk
[Type       ]: Function
[Arguments  ]: set-syntax-junk SYNTAX-TABLE CHAR
[Package    ]: editor
[Seealso    ]: syntax-junk-p
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
文字CHARをゴミ文字として規定します。
skip-syntax-spec-forward / skip-syntax-spec-backward でゴミ文字をスキッ
プするのに役に立つかもしれません。


■set-syntax-match
[Type       ]: Function
[Arguments  ]: set-syntax-match SYNTAX-TABLE OPEN-CHAR CLOSE-CHAR
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
文字OPEN-CHARとCLOSE-CHARをSYNTAX-TABLEに対応付けのある文字として規定します。

使用例：
  ;;; c-mode.lの定義
  (set-syntax-match *c-mode-syntax-table* #\( #\))
  (set-syntax-match *c-mode-syntax-table* #\{ #\})
  (set-syntax-match *c-mode-syntax-table* #\[ #\])


■set-syntax-math
[Type       ]: Function
[Arguments  ]: set-syntax-math SYNTAX-TABLE CHAR
[Package    ]: editor
[Seealso    ]: syntax-math-p
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
文字CHARを対になった区切り文字として規定します。
Latexの数式モードの区切りに相当します。

使用例：
  ;;; Latex.l
  (set-syntax-math *LaTeX-mode-syntax-table* #\$)


■set-syntax-option
[Type       ]: Function
[Arguments  ]: set-syntax-option SYNTAX-TABLE OPTION
[Package    ]: editor
[Seealso    ]: set-syntax-comment-column , syntax-start-column-comment
[Link       ]: [xyzzy:07988]
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
シンタックスの補助的な設定をします。

  *syntax-option-c-preprocessor* : （詳細不明）
  *syntax-option-indent-c++*     : （詳細不明）
  *syntax-option-indent-java*    : （詳細不明）
  *syntax-option-indent-csharp*  : （詳細不明）
  *syntax-option-column-comment-char* :
        set-syntax-comment-columnだけでは、指定カラムに空白以外が来ると
        コメントと見なしますが、特定のキャラクタが現れた場合にだけにした
        い場合に設定します。以下の二つを設定しなければなりません。

        1)set-syntax-optionに*syntax-option-comment-column-char*を指定する。
        2)set-syntax-start-column-commentでそのキャラクタを指定する。

使用例：
  ;;; fortran.lの定義
  ;;; 0桁目に'C'か'c'が現れたらその行はコメントと見なす。
  (set-syntax-comment-column fortran-mode-syntax-table 0)
  (set-syntax-option fortran-mode-syntax-table
                     *syntax-option-column-comment-char*)
  (set-syntax-start-column-comment fortran-mode-syntax-table #\C)
  (set-syntax-start-column-comment fortran-mode-syntax-table #\c)

参考：
  [xyzzy:07988]を参照のこと


■set-syntax-punctuation
[Type       ]: Function
[Arguments  ]: set-syntax-punctuation SYNTAX-TABLE CHAR
[Package    ]: editor
[Seealso    ]: syntax-punctuation-p
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
文字CHARを句読点文字として規定します。
ほとんど使うことはないでしょう。


■set-syntax-quote
[Type       ]: Function
[Arguments  ]: set-syntax-quote SYNTAX-TABLE CHAR
[Package    ]: editor
[Seealso    ]: syntax-quote-p
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
SYNTAX-TABLEにCHARをquoteとして規定します。
lispでリストで使う`''(quote)や、マクロで使う``'(backquote) `,'(comma)、
ベクタで使う`#'等があります。シンタックス上では意味付けをすることができ
ますが、どのような違いが出るかは不明。

使用例：
  ; lisp/lispmode.l
  (set-syntax-quote *lisp-mode-syntax-table* #\#)
  (set-syntax-quote *lisp-mode-syntax-table* #\')
  (set-syntax-quote *lisp-mode-syntax-table* #\,)
  (set-syntax-quote *lisp-mode-syntax-table* #\`)


■set-syntax-start-c++-comment
[Type       ]: Function
[Arguments  ]: set-syntax-start-c++-comment SYNTAX-TABLE CHAR &optional PARSE-SEXP-IGNORE-COMMENT-P
[Package    ]: editor
[Seealso    ]: syntax-c++-comment-p , set-syntax-end-c++-comment
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
文字CHARをC++スタイルのコメントの開始文字として規定します。
「C++スタイルのコメント」とは同じ文字を二つ連ねる形式のことを指しています。

使用例：
  ;;; cc-mode.l
  (set-syntax-start-c++-comment *c++-mode-syntax-table* #\/)


■set-syntax-start-column-comment
[Type       ]: Function
[Arguments  ]: set-syntax-start-column-comment SYNTAX-TABLE CHAR &optional PARSE-SEXP-IGNORE-COMMENT-P
[Package    ]: editor
[Seealso    ]: set-syntax-option , set-syntax-comment-column , syntax-start-column-comment-p
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
set-syntax-comment-columnの補助的な設定をします。
set-syntax-optionに*syntax-option-comment-column-char*を指定した場合に
のコメント開始用のキャラクタを設定します。
詳細はset-syntax-optionを参照して下さい。


■set-syntax-start-comment
[Type       ]: Function
[Arguments  ]: set-syntax-start-comment SYNTAX-TABLE CHAR &optional PARSE-SEXP-IGNORE-COMMENT-P
[Package    ]: editor
[Seealso    ]: syntax-start-comment-p
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
文字CHARをコメント開始文字として規定します。

使用例：
  ;;; perl.l
  (set-syntax-start-comment *perl-mode-syntax-table* #\#)


■set-syntax-start-multi-comment
[Type       ]: Function
[Arguments  ]: set-syntax-start-multi-comment SYNTAX-TABLE STRING
[Package    ]: editor
[Seealso    ]: set-syntax-end-multi-comment
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
文字列STRINGをSYNTAX-TABLEに複数行のコメント開始を表す文字列として規定します。

使用例：
  ;;; c-mode.lの定義
  (set-syntax-start-multi-comment *c-mode-syntax-table* "/*")


■set-syntax-string
[Type       ]: Function
[Arguments  ]: set-syntax-string SYNTAX-TABLE CHAR
[Package    ]: editor
[Seealso    ]: syntax-string-p
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
SYNTAX-TABLEにCHARを文字列の区切り文字として規定します。ここで指定した文
字で囲まれた領域はリテラルの文字列として色づけされます。

使用例：
  ; | を 文字列の区切り文字とする場合
  (set-syntax-string *user-mode-syntax-table* #\|)


■set-syntax-symbol
[Type       ]: Function
[Arguments  ]: set-syntax-symbol SYNTAX-TABLE CHAR
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
文字CHARがSYNTAX-TABLEでシンボル名を構成する文字（単語構成文字は除く）と
して規定します。

使用例：
  ;;; c-mode.lの定義
  (set-syntax-symbol *c-mode-syntax-table* #\_)
  (set-syntax-symbol *c-mode-syntax-table* #\#)


■set-syntax-symbol-prefix
[Type       ]: Function
[Arguments  ]: set-syntax-symbol-prefix SYNTAX-TABLE CHAR
[Package    ]: editor
[Seealso    ]: syntax-symbol-prefix-p
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
文字をシンボルの前置子として規定します。

  SYNTAX-TABLE : シンタクッステーブルを指定します。
  CHAR         : 文字を指定します。  

HTMLの`&'(実体参照)や、Perlの`$'(変数)、`@'(配列)、`%'(連想配列)等が
相当するようです。Emacsの構文テーブルには相当するものが無いように思います。

使用例：
  ;;; perl.l
  (set-syntax-symbol-prefix *perl-mode-syntax-table* #\$)
  (set-syntax-symbol-prefix *perl-mode-syntax-table* #\@)
  (set-syntax-symbol-prefix *perl-mode-syntax-table* #\%)


■set-syntax-tag
[Type       ]: Function
[Arguments  ]: set-syntax-tag SYNTAX-TABLE OPEN-CHAR CLOSE-CHAR
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
シンタックステーブルにタグの開始記号と終了記号を設定します。
HTMLやXML系のモードに設定するといいみたいです。

使用例：
  ;;; htmlmode.lでの定義
  (set-syntax-tag *html-mode-syntax-table* #\< #\>)


■set-syntax-whitespace
[Type       ]: Function
[Arguments  ]: set-syntax-whitespace SYNTAX-TABLE CHAR
[Package    ]: editor
[Seealso    ]: syntax-whitespace-p
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
SYNTAX-TABLEにCHARをwhitespaceとして規定します。whitespaceとして規定され
た文字は skip-white-forward / skip-white-backwardでスキップされるように
なります。

使用例：
  ; lisp/lispmode.l
  (set-syntax-whitespace *lisp-mode-syntax-table* #\SPC)
  (set-syntax-whitespace *lisp-mode-syntax-table* #\TAB)
  (set-syntax-whitespace *lisp-mode-syntax-table* #\C-l)
  (set-syntax-whitespace *lisp-mode-syntax-table* #\RET)


■set-syntax-word
[Type       ]: Function
[Arguments  ]: set-syntax-word SYNTAX-TABLE CHAR
[Package    ]: editor
[Seealso    ]: syntax-word-p
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
文字を単語を構成する文字として規定します。
skip-syntax-spec-forward / skip-syntax-spec-backwardに影響します。

  SYNTAX-TABLE : シンタクッステーブルを指定します。
  CHAR         : 文字を指定します。

デフォルトでは#\0 .. #\9, #\A .. #\Z, #\a .. #\z です。
余程特殊でない限り新たに設定する必要は無いでしょう。


■set-tab-columns
[Type       ]: Function
[Arguments  ]: set-tab-columns COLUMN &optional BUFFER
[Package    ]: editor
[Seealso    ]: tab-columns
[File       ]: builtin.l
[Section    ]: テキスト
[Description]: 
タブ幅を設定します。

  COLUMN : タブ幅を指定します。1以上32以下の任意の整数です。
           2のべき乗である必要はありません。
  BUFFER : タブ幅を変更するバッファを指定します。
           指定がなければカレントバッファが対象になります。


■set-text-attribute
[Type       ]: Function
[Arguments  ]: set-text-attribute FROM TO TAG &key :foreground :background :bold :underline :strike-out :prefix :extend
[Package    ]: editor
[Seealso    ]: modify-text-attributes , set-text-color , find-text-attribute
[File       ]: builtin.l
[Section    ]: テキスト
[Description]: 
リージョンに色などの属性を付けます。
付けた属性は delete-text-attributes で消せます。
一括して消す場合には、clear-all-text-attributes を使用します。

  FROM          属性を付加する開始位置
  TO            属性を付加する終了位置
  TAG           個々の属性を区別するタグ
  :bold         ボールドで表示するかどうかを
  :underline    下線付きで表示するかどうかを
  :strike-out   取り消し線を表示するかどうか
  :foreground   文字色を整数で指定
  :background   背景色を整数で指定
  :prefix       使い方は不明
  :extend       行末の改行文字以降も変えるかどうか

色の整数について：
  [ツール]-[共通設定]-[フォント]のところにある表示色になります。

  :foreground 0     : 文字色
              1〜15 : 文字1〜文字15
  :background 0     : 背景色
              1〜15 : 背景1〜背景15

  15 より大きい値を指定すると，0〜15 の色が繰り返されます。

使用例：
  ;;; バッファ全体を文字1の色にする。
  (set-text-attribute (point-min) (point-max) 'all :bold t :foreground 1)
  => t
  (delete-text-attributes 'all)
  => t


■set-text-color
[Type       ]: Function
[Arguments  ]: set-text-color FROM TO &optional FOREGROUND BACKGROUND CHAR EXTEND-P
[Package    ]: editor
[Seealso    ]: set-text-attribute
[File       ]: cmds.l
[Section    ]: テキスト
[Description]: 
指定された領域を装飾します。

  FROM       : 開始位置を指定します。
  TO         : 終了位置を指定します。
  FOREGROUND : 文字の色を番号で指定します。以下を参照
  BACKGROUND : 文字の色を番号で指定します。以下を参照
  CHAR       : （詳細不明）
  EXTEND-P   : （詳細不明）

参考：
  ;;; 番号と色の対応
         R   G   B
       ------------
   0     0   0   0
   1   255   0   0
   2     0 255   0
   3   255 255   0
   4     0   0 255
   5   255   0 255
   6     0 255 255
   7   255 255 255
   8     0   0   0
   9   128   0   0
  10     0 128   0
  11   128 128   0
  12     0   0 128
  13   128   0 128
  14     0 128 128
  15   128 128 128

補足:
  この関数は Version 0.0.0.92 にて obsolete となりました。


■set-variable
[Type       ]: Function
[Arguments  ]: set-variable VAR
[Package    ]: editor
[File       ]: cmds.l
[Section    ]: 変数と定数
[Description]: 
変数 VAR をプロンプトから入力した値に設定します。[C-x a]
VAR の値が文字列なら文字列として、それ以外なら S 式として入力を読み取ります。

VAR が boundp でないとエラーになります。


■set-window
[Type       ]: Function
[Arguments  ]: set-window WINDOW
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ウィンドウ
[Description]: 
ウィンドウを変更します。
selected-window や get-buffer-window で取得したウィンドウに移動します。

  WINDOW：移動先のウィンドウ

使用例：
  ;;; *scratch*が表示されていれば移動する。
  (setq win (get-buffer-window (find-buffer "*scratch*")))
  => #<window 48436204>
  (if win (set-window win))
  => t
  (selected-buffer)
  => #<buffer: *scratch*>


■set-window-configuration
[Type       ]: Function
[Arguments  ]: set-window-configuration CONF
[Package    ]: editor
[Seealso    ]: current-window-configuration
[File       ]: builtin.l
[Section    ]: ウィンドウ
[Description]: 
取得しておいたウィンドウの状態に戻します。

  CONF：current-window-configurationで取得したウィンドウの状態


■setf
[Type       ]: Macro
[Arguments  ]: setf {PLACE NEW-VALUE}*
[Package    ]: lisp
[Seealso    ]: setq
[File       ]: setf.l
[Section    ]: 変数と定数
[Description]: 
このマクロは、変数にアクセスし、その値を変更するために使われます。従来用
いられてきたsetqよりも汎用的であり、setqと全く置き換えて使用することがで
きます。PLACEは、アクセスしようとするデータオブジェクトのある場所を指し、
NEW-VALUEを評価した値がその場所に書き込まれます。

setfは、いくつでもPLACEやNEW-VALUEの対でも受け付けます。そして、同時にで
はなく、順番に値を割り当てます。つまり、最初の引数の対は、二番目の対が評
価される前に評価され、PLACEによって示される場所に値が書き込まれています。
このように、二番目の引数の対は、最初の対の評価によって割り当てられた値を
使うことが可能です。setfは、最後に評価された引数の対によって割り当てられ
た値、あるいは、まったく引数が与えられなかった場合は、nilを返します。

PLACEの形式は以下のどのようなものも可能です：

(1)変数名(レキシカル変数でもスペシャル変数でもよい)

  (setf hoge 1); 変数hogeに1を代入する
  => 1
  hoge
  => 1

(2)アクセス関数
 * 構造体(構造体名＋変数)

  (defstruct foo a b c); 構造体fooを宣言する
  => #<structure-definition: foo>
  (setf hoge (make-foo)); hogeに空のfoo構造体を代入する(ここのsetfはsetqでもよい)
  => #S(foo a nil b nil c nil)
  (setf (foo-a hoge) 10); hogeのスロットaに10を代入する
  => 10
  hoge
  => #S(foo a 10 b nil c nil)

 * 配列(aref, svref, fill-pointer)

  (setf hoge (make-array 3)); hogeに空のベクトルを代入する(ここのsetfはsetqでもよい)
  => #(nil nil nil)
  (setf (aref hoge 1) 5); hogeベクトルの2番目の数値を5にする
  => 5
  hoge
  => #(nil 5 nil)

 * リスト(car, cdr, first, rest, etc...)

  (setf hoge '("a" "b" "c"))
  => ("a" "b" "c")
  (setf (car (cdr hoge)) "d")
  => "d"
  hoge
  =>("a" "d" "c")

 * 属性リスト(get, getf, symbol-plist)

  (setf (get 'Japan 'language) "Japanese")
  => "Japanese"
  (setf (get 'Japan 'population) 120000000)
  => 120000000
  (symbol-plist 'Japan)
  => (population 120000000 language "Japanese")

 * その他(symbol-value, gethash, symbol-function, documentation, macro-function)


■setq
[Type       ]: Special Form
[Arguments  ]: setq {VAR FORM}*
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 変数と定数
[Description]: 
変数に値を設定します。

  (setq 変数1 値1 変数2 値2 ... 変数N 値N)

上記の様に変数と値の組を任意の数だけ並べることができます。

  (setq foo '(1 2 3)) = (set 'foo '(1 2 3))

使用例：
  ;;; setとsetqで同じことをしてみる。
  (set 'foo '(2 3 4))   => (2 3 4)
  foo                   => (2 3 4)
  (setq foo '(1 2 3))   => (1 2 3)
  foo                   => (1 2 3)


■setq-default
[Type       ]: Macro
[Arguments  ]: setq-default VAR VAL
[Package    ]: editor
[Seealso    ]: default-value , make-local-variable , defvar-local
[File       ]: misc.l
[Section    ]: 変数と定数
[Description]: 
シンボルがローカルでない場合のデフォルトの値を設定します。

この関数は、各 symbol のデフォルト値を、(それに対応する) value に設定し
ます。(symbol は評価しませんが) value は評価します。最初の value を返し
ます。 

デフォルト値は、固有のバッファローカル値を持たないバッファで見られます。 

カレントバッファで symbol がバッファローカルでない場合、これは (この)カ
レントバッファで setq を行なうのと同じことになります。 symbol がカレント
バッファでバッファローカルである場合、カレントバッファで見える値ではなく、
他のバッファがまだバッファローカルな値を持たない場合にそこで見える値を設
定します。

使用例：
  (make-variable-buffer-local 'local)
  => local
  ;; バッファ foo 中:
  (setq local 'foo)
  => foo
  ;; バッファ bar 中:
  local
  => nil
  (setq-default local 'default)
  => default
  local
  => default
  (setq local 'bar)
  => bar
  ;; バッファ baz 中:
  local
  => default
  ;; バッファ foo 中:
  (setq local 'foo)
  => foo
  (default-value 'local)
  => default


■setup-temp-buffer
[Type       ]: Function
[Arguments  ]: setup-temp-buffer BUFFER
[Package    ]: editor
[Seealso    ]: buffer-read-only , need-not-save , kept-undo-information , auto-save
[File       ]: misc.l
[Section    ]: バッファ
[Description]: 
BUFFER を一時バッファ用に初期化します。
具体的には以下のようにバッファローカル変数を設定します。

  buffer-read-only      -> nil
  need-not-save         -> t
  kept-undo-information -> nil
  auto-save             -> nil


■seventh
[Type       ]: Function
[Arguments  ]: seventh X
[Package    ]: lisp
[Seealso    ]: nth
[File       ]: list.l
[Section    ]: リスト
[Description]: 
list の 7 番目の要素を返します。

  (seventh X) = (nth 6 X)

使用例：
  (seventh '(1 2 3 4 5 6 7 8 9 0))
  => 7


■shell-execute
[Type       ]: Function
[Arguments  ]: shell-execute FILENAME &optional DIRECTORY PARAMS
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: プロセス
[Description]: 
何かを行います。URLであればそれを開き、実行ファイルであれば実行したり、
拡張子に応じてアプリケーションを実行します。

  FILENAME  : 何か？URLもOK？
  DIRECTORY : どこでそれを実行するかを指定します。
        t       (cwd)の返されるディレクトリで実行されるみたいです。
        nil     特に指定がないのでFILENAMEのディレクトリで実行されます。

質問：

  | http://java.sun.com/products/jdk/1.2/docs/api/index.html
  | とかをF3キー一発で開けたらって思ってるんです。

  こんなかんじでどうぞ。

  (defun foo ()
    (interactive)
    (shell-execute "http://java.sun.com/products/jdk/1.2/docs/api/index.html" t))


■shift-region
[Type       ]: Function
[Arguments  ]: shift-region START END &optional (COLUMN (TAB-COLUMNS (SELECTED-BUFFER)))
[Package    ]: editor
[Seealso    ]: unshift-region
[File       ]: region.l
[Section    ]: リージョン
[Description]: 
STARTとENDがある行の範囲をCOLUMN桁だけインデントします。


■shiftf
[Type       ]: Macro
[Arguments  ]: shiftf {PLACE}+ NEWVALUE
[Package    ]: lisp
[Seealso    ]: rotatef
[File       ]: setf.l
[Section    ]: 変数と定数
[Description]: 
引数として与えられた値の格納場所の内容をシフトさせます。
(shiftf a b c)とすると以下のようになります。

        ┌a ┐  ┌b ┐  ┌c ┐
実行前：│ 1│  │ 2│  │ 3│
        └─┘  └┬┘  └┬┘
              ┌─┘  ┌─┘
          ┌─┘  ┌─┘  
          ↓      ↓      
        ┌a ┐  ┌b ┐  ┌c ┐
実行後：│ 2│  │ 3│  │ 3│
        └─┘  └─┘  └─┘


■short-float-p
[Type       ]: Function
[Arguments  ]: short-float-p OBJECT
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
OBJECTがshort-floatならt、それ以外ならnilを返します。


■show-command-bar
[Type       ]: Function
[Arguments  ]: show-command-bar SYM
[Package    ]: editor
[Seealso    ]: hide-command-bar
[File       ]: cmdbar.l
[Section    ]: メニュー
[Description]: 
define-command-barで定義したコマンドバーを表示します。


■show-html-help
[Type       ]: Function
[Arguments  ]: show-html-help
[Package    ]: editor
[File       ]: winhelp.l
[Section    ]: その他
[Description]: 
カーソル位置の文字列を HTML Help から検索します。
*html-help-path* に設定されたヘルプファイルが使用されます。

*html-help-path* の値は、「共通設定」-「ディレクトリ」-「HTML ヘルプ」-
「COL/CHMファイル」から設定できるみたいです。


■show-tool-bar
[Type       ]: Function
[Arguments  ]: show-tool-bar NAME &optional EDGE X Y W
[Package    ]: editor
[Seealso    ]: hide-tool-bar
[File       ]: builtin.l
[Section    ]: メニュー
[Description]: 
ツールバーNAMEを表示します。EDGE X Y Wを指定することで任意の位置に表示さ
せることが可能です。

  EDGE  :top    上側に表示
        :left   左側に表示
        :right  右側に表示
        :bottom 下側に表示
        nil     非表示
  X     横の位置
  Y     縦の位置
  W     タブバーの場合に左右に表示した場合の横幅を与える。
        ツールバーの場合はnilを与える。

[表示]-[ツールバー]に登録したいのならば、show-tool-barではなく、
define-command-bar/show-command-barを使います。


■show-winhelp
[Type       ]: Function
[Arguments  ]: show-winhelp
[Package    ]: editor
[File       ]: winhelp.l
[Section    ]: その他
[Description]: 
カーソル位置の文字列を WinHelp から検索します。[C-F1]
*winhelp-path* に設定されたヘルプファイルが使用されます。


■shrink-window
[Type       ]: Function
[Arguments  ]: shrink-window &optional (ARG 1)
[Package    ]: editor
[Seealso    ]: shrink-window-horizontally , enlarge-window
[File       ]: window.l
[Section    ]: ウィンドウ
[Description]: 
カーソルのあるウィンドウの高さを小さくします。


■shrink-window-horizontally
[Type       ]: Function
[Arguments  ]: shrink-window-horizontally &optional (ARG 1)
[Package    ]: editor
[Seealso    ]: enlarge-window-horizontally
[Section    ]: ウィンドウ
[Description]: 
カーソルのあるウィンドウの幅を小さくします。

使用例：
  ;;; listerのマージンからウィンドウの幅を引く場合
  (shrink-window-horizontally (- (window-width) *lister-margin*))


■si:*activate-toplevel
[Type       ]: Function
[Arguments  ]: *activate-toplevel
[Package    ]: system
[File       ]: builtin.l
[Section    ]: その他
[Description]: 
xyzzyを他のウィンドウの最前面に表示します。


■si:*builtin-function-p
[Type       ]: Function
[Arguments  ]: *builtin-function-p OBJECT
[Package    ]: system
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
オブジェクトがビルトイン関数かどうかを調べます。

使用例：
  ;;; carを調べてみる。
  (si:*builtin-function-p #'car)
  => t


■si:*load-library
[Type       ]: Function
[Arguments  ]: *load-library FILENAME &key :no-suffix :if-does-not-exist :no-message
[Package    ]: system
[File       ]: builtin.l
[Section    ]: 評価
[Description]: 
ライブラリをロードします。普通はload-libraryでいいと思いますが、
どんなときにsi:*load-libraryを使うのでしょうか？

  :no-suffix         : non-nil なら指定されたファイル名をそのままロードする。
                       nil なら *load-path* を考慮する。
  :if-does-not-exist : :no-suffix が nil でファイルが存在しない場合、
                       :error ならエラー、それ以外なら nil を返す。
  :no-message        : non-nil ならロード中のメッセージを出さない。


■si:*paste-hook*
[Type       ]: Variable
[Package    ]: system
[Seealso    ]: paste-from-clipboard
[Section    ]: 変数と定数
[Description]: 
クリップボードから貼り付けるときに実行されます。


■si:*stream-line-number
[Type       ]: Misc
[Arguments  ]: *stream-line-number &optional STREAM
[Package    ]: system
[File       ]: builtin.l
[Section    ]: 入出力
[Description]: 
（詳細不明）
(si:*stream-line-number *standard-input*)


■si:base64-decode
[Type       ]: Function
[Arguments  ]: base64-decode INPUT-STRING-OR-STREAM &optional OUTPUT-STREAM FOLD-WIDTH
[Package    ]: system
[Seealso    ]: si:base64-encode
[File       ]: builtin.l
[Section    ]: その他
[Description]: 
Base64でデコードします。

  INPUT-STRING-OR-STREAM : 入力の文字列または入力ストリームを指定します。
  OUTPUT-STREAM          : 出力のストリームを指定します。
        nil     デコードの結果はbase64-decodeの戻り値となります。
        nil以外 デコードの結果はOUTPUT-STREAMに出力されます。

使用例：
  (si:base64-decode "gtmCsILZgrA=")
  => "ほげほげ"


■si:base64-encode
[Type       ]: Function
[Arguments  ]: base64-encode INPUT-STRING-OR-STREAM &optional OUTPUT-STREAM
[Package    ]: system
[Seealso    ]: si:base64-decode
[File       ]: builtin.l
[Section    ]: その他
[Description]: 
Base64エンコードします。

  INPUT-STRING-OR-STREAM : 入力の文字列または入力ストリームを指定します。
  OUTPUT-STREAM          : 出力のストリームを指定します。
        nil     エンコードの結果はbase64-encodeの戻り値となります。
        nil以外 エンコードの結果はOUTPUT-STREAMに出力されます。

使用例：  
  (si:base64-encode "ほげほげ")
  => "gtmCsILZgrA="


■si:closure-variable
[Type       ]: Function
[Arguments  ]: si:closure-variable CLOSURE
[Package    ]: system
[File       ]: builtin.l
[Section    ]: その他
[Description]: 
クロージャの中身を覗くための関数です。

  CLOSURE : レキシカルクロージャもしくは関数定義に
            レキシカルクロージャを持つシンボルを指定します。

以下の関数でクロージャを参照することが可能です。

  si:closure-variable closure
  si:closure-function closure
  si:closure-frame closure
  si:closure-body closure

使用例：
  (setq foo (let ((x 3)) #'(lambda () (incf x) x)))
  => #<lexical-closure: (anonymous)>
  (funcall foo)
  => 4
  (funcall foo)
  => 5
  (si:closure-variable foo)
  => ((x . 5))


■si:dump-image-path
[Type       ]: Function
[Arguments  ]: dump-image-path
[Package    ]: system
[Seealso    ]: dump-xyzzy
[File       ]: builtin.l
[Section    ]: システム
[Description]: 
読み込んだダンプファイルのパスを返します。

使用例：
  (si:dump-image-path)
  => "C:/Program Files/xyzzy/xyzzy.w2k"


■si:getenv
[Type       ]: Function
[Arguments  ]: getenv VARIABLE
[Package    ]: system
[Seealso    ]: user-name , machine-name
[File       ]: builtin.l
[Section    ]: システム
[Description]: 
環境変数の値を取り出します。

  VARIABLE：環境変数名

使用例：
  ;;; 環境変数PATHを取り出して、個々のPATHに分割する。
  (split-string (si:getenv "PATH") #\;)
  => ("c:\\usr\\local\\bin" "C:\\WINNT\\system32" "C:\\WINNT" ...)


■si:make-chunk
[Type       ]: Function
[Arguments  ]: make-chunk TYPE SIZE &optional SOURCE OFFSET
[Package    ]: system
[File       ]: builtin.l
[Section    ]: チャンク
[Description]: 
チャンクを作成します。チャンクとは外部とのやりとりをするための領域で、
外部DLLの呼び出しをする場合等に使用します。C言語的にはchar[]に相当するよ
うに思います。

  TYPE      : チャンクの型です。現状では使用していないようです。
  SIZE      : チャンクの長さです。
  SRC-CHUNK : 作成するチャンクの元ネタとなるチャンクです。
  OFFSET    : 作成するチャンクの元ネタとなるチャンクの開始位置です。

SRC-CHUNKとOFFSETの組み合わせでチャンクに関連付けされるメモリの取り方が
変わるようです。他のチャンクの内容を使用したい場合等にはを付けましょう。

  ┏━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┓  
  ┃                  ┃OFFSET                                            ┃  
  ┃                  ┠────────────┬────────────┨  
  ┃                  ┃指定有                  │nil                     ┃  
  ┣━━━━━┯━━━╋━━━━━━━━━━━━┿━━━━━━━━━━━━┫  
  ┃SRC-CHUNK │指定有┃SRC-CHUNK + OFFSETを参照│SRC-CHUNKを共有         ┃  
  ┃          ├───╂────────────┼────────────┨  
  ┃          │nil   ┃OFFSETのアドレスを参照  │新しいメモリを確保      ┃  
  ┗━━━━━┷━━━┻━━━━━━━━━━━━┷━━━━━━━━━━━━┛  

SRC-CHUNK が nil で OFFSET が指定されていた場合には、 OFFSET をアドレス
と見なすのが特殊です。

補足説明：
  si:make-chunkはDLLを呼び出すとき、C言語に渡せるメモリ割り当てを行いま
  す。例えば以下のC言語のコードは
  ┌───────────────────────────────────┐
  │char buf[300];                                                        │
  │DWORD rc = GetCurrentDirectory(300, buf);                             │
  └───────────────────────────────────┘
  xyzzy lispで書くと、以下のようになります。
  ┌───────────────────────────────────┐
  │(let ((s (si:make-chunk nil 300))) ; C言語互換メモリの割り当て        │
  │   (GetCurrentDirectory 300 s)     ; define-dll-entryで定義しておく事 │
  │   (si:unpack-string s 0))         ; lispの文字列に変換               │
  └───────────────────────────────────┘


■si:make-string-chunk
[Type       ]: Function
[Arguments  ]: make-string-chunk STRING
[Package    ]: system
[File       ]: builtin.l
[Section    ]: チャンク
[Description]: 
引数に指定された文字列の内容がコピーされたチャンクを作成します。

使用例：
  ;;; WIN32APIのMessageBoxを使ってみる。
  (let ((s (si:make-string-chunk "hello"))
        (r (si:make-string-chunk "title")))
    (MessageBox 0 s r MB_OK))     ; define-dll-entryで定義する事


■si:md5
[Type       ]: Function
[Arguments  ]: md5 INPUT-STRING-OR-STREAM
[Package    ]: system
[File       ]: builtin.l
[Section    ]: その他
[Description]: 
MD5ハッシュ値を得ます。

  INPUT-STRING-OR-STREAM : 入力の文字列または入力ストリームを指定します。

使用例：  
  (si:md5 "ほげほげ")
  => "11e100e3eb6e6171d9681ba6641794e3"


■si:quoted-printable-decode
[Type       ]: Function
[Arguments  ]: quoted-printable-decode INPUT-STRING-OR-STREAM &optional OUTPUT-STREAM UNDERSCORE-TO-SPACE
[Package    ]: system
[File       ]: builtin.l
[Section    ]: その他
[Description]: 
Quoted-Printableデコードします。

  INPUT-STRING-OR-STREAM : 入力の文字列または入力ストリームを指定します。
  OUTPUT-STREAM          : 出力のストリームを指定します。
        nil     デコードの結果はquoted-printable-decodeの戻り値となります。
        nil以外 デコードの結果はOUTPUT-STREAMに出力されます。


■si:system-root
[Type       ]: Function
[Arguments  ]: system-root
[Package    ]: system
[Seealso    ]: user-homedir-pathname
[File       ]: builtin.l
[Section    ]: システム
[Description]: 
xyzzyがインストールされているパスを返します。

※userパッケージもeditorパッケージもsystemをuse-packageしていないので、
  呼び出すときはsi:を付けて、(si:system-root)としなければいけません。

使用例：
  (load (merge-pathnames "lisp/henmi/foo.l" (si:system-root)))


■si:unpack-string
[Type       ]: Function
[Arguments  ]: unpack-string CHUNK OFFSET SIZE &optional ZERO-TERMINATING-P
[Package    ]: system
[Seealso    ]: si:make-chunk
[File       ]: builtin.l
[Section    ]: チャンク
[Description]: 
チャンクをlispの文字列に変換します。

  CHUNK              : make-chunkで作られたチャンク
  OFFSET             : 文字列化する位置を指定します。
  SIZE               : OFFSETの位置から文字列化する長さを指定します。
  ZERO-TERMINATING-P : （詳細不明）


■si:uudecode
[Type       ]: Function
[Arguments  ]: uudecode INPUT-STRING-OR-STREAM &optional OUTPUT-STREAM
[Package    ]: system
[Seealso    ]: si:uuencode
[File       ]: builtin.l
[Section    ]: その他
[Description]: 
uudecodeします。

  INPUT-STRING-OR-STREAM : 入力の文字列または入力ストリームを指定します。
  OUTPUT-STREAM          : 出力のストリームを指定します。
        nil     デコードの結果はuudecodeの戻り値となります。
        nil以外 デコードの結果はOUTPUT-STREAMに出力されます。


■si:uuencode
[Type       ]: Function
[Arguments  ]: uuencode INPUT-STRING-OR-STREAM &optional OUTPUT-STREAM
[Package    ]: system
[Seealso    ]: si:uudecode
[File       ]: builtin.l
[Section    ]: その他
[Description]: 
uuencodeします。

  INPUT-STRING-OR-STREAM : 入力の文字列または入力ストリームを指定します。
  OUTPUT-STREAM          : 出力のストリームを指定します。
        nil     エンコードの結果はuuencodeの戻り値となります。
        nil以外 エンコードの結果はOUTPUT-STREAMに出力されます。


■si:www-url-decode
[Type       ]: Function
[Arguments  ]: www-url-decode INPUT-STRING-OR-STREAM &optional OUTPUT-STREAM
[Package    ]: system
[Seealso    ]: si:www-url-encode
[File       ]: builtin.l
[Section    ]: その他
[Description]: 
URL デコードを行います。

  INPUT-STRING-OR-STREAM : 入力の文字列または入力ストリームを指定します。
  OUTPUT-STREAM          : 出力ストリームです。
                           t を指定した場合は標準出力へ出力します。
                           省略もしくは nil を指定すると戻り値になります。

使用例:
  (si:www-url-decode "%82%D9%82%B0%82%D9%82%B0" nil)
  =>"ほげほげ"

補足:
  xyzzy 0.2.2.233 では builtin.l 中の引数の記述が間違っています。
  0.2.2.234 で修正されました。


■si:www-url-encode
[Type       ]: Function
[Arguments  ]: www-url-encode INPUT-STRING-OR-STREAM &optional OUTPUT-STREAM LITERAL-CHARS
[Package    ]: system
[Seealso    ]: si:www-url-decode
[File       ]: builtin.l
[Section    ]: その他
[Description]: 
RFC1738 に基づき文字列の URL エンコードを行います。

  INPUT-STRING-OR-STREAM : 入力の文字列または入力ストリームを指定します。
  OUTPUT-STREAM          : 出力ストリームです。
                           t を指定した場合は標準出力へ出力します。
                           省略もしくは nil を指定すると戻り値になります。
  LITERAL-CHARS          : エンコードしない文字群を指定します。
     t                       すべての文字をエンコードする
     nil                     "-A-Za-z0-9$_.+!*'(|),"と同値

使用例:
  ; 標準では Shift_JIS としてエンコード
  (si:www-url-encode "かめ")
  =>"%82%A9%82%DF"
  
  ; EUC-JP としてエンコード
  (si:www-url-encode (map-internal-to-euc "かめ"))
  =>"%A4%AB%A4%E1"
  
  ; 変換しない文字群を明示する
  (si:www-url-encode "www-url-encode" nil "0-9A-Za-z")
  =>"www%2Durl%2Dencode"

補足:
  RFC1738は現在RFC3986によって更新されています。
  RFC3986で定義されている unreserved な文字の種類は "0-9A-Za-z---._~" です。

  xyzzy 0.2.2.233 では builtin.l 中の引数の記述が間違っています。
  0.2.2.234 で修正されました。


■signal-process
[Type       ]: Function
[Arguments  ]: signal-process PROCESS
[Package    ]: editor
[Seealso    ]: kill-process , process-exit-code
[File       ]: builtin.l
[Section    ]: プロセス
[Description]: 
指定されたプロセスPROCESSにシグナルを送ります。
※SIGINT?


■signum
[Type       ]: Function
[Arguments  ]: signum NUMBER
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
数値の符号を返します。
引数が複素数の場合は偏角が等しく絶対値が 1 の複素数を返します

使用例：
  (signum 12)
  => 1
  (signum 0)
  => 0
  (signum -5.0)
  =>-1.0
  (signum (complex 1 1))
  =>#C(0.7071068 0.7071068)


■simple-string
[Type       ]: Misc
[Package    ]: lisp
[Seealso    ]: simple-string-p
[Section    ]: データ型
[Description]: 
simple-string とはシンプルな文字列のことを指します。
共有可能でなく、フィルポインタを持たず、サイズ変更不可能な文字列のことで
す。formatやconcatを使って文字列を操作する場合にはsimple-stringのままです。

使用例：
  ;;; simple-stringの場合
  (type-of "abc") 
  => simple-string


■simple-string-p
[Type       ]: Function
[Arguments  ]: simple-string-p OBJECT
[Package    ]: lisp
[Seealso    ]: simple-string
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
OBJECTがsimple-stringならt、それ以外ならnilを返します。

使用例：
  ;;; make-vectorを使ってsimple-stringでないstringを作ります。
  (setq var1 (make-vector 10 :element-type 'character)
        var2 (make-vector 10 :element-type 'character :fill-pointer 0))
  => ""
  (type-of var1)                => simple-string
  (type-of var2)                => string
  (simple-string-p var1)        => t
  (simple-string-p var2)        => nil


■simple-vector-p
[Type       ]: Function
[Arguments  ]: simple-vector-p OBJECT
[Package    ]: lisp
[Seealso    ]: vectorp
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
OBJECTがsimple-vectorならt、それ以外ならnilを返します。


■sin
[Type       ]: Function
[Arguments  ]: sin RADIANS
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
正弦関数の値を返します。


■single-float-p
[Type       ]: Function
[Arguments  ]: single-float-p OBJECT
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
OBJECTがsingle-floatならt、それ以外ならnilを返します。


■sinh
[Type       ]: Function
[Arguments  ]: sinh Z
[Package    ]: lisp
[File       ]: number.l
[Section    ]: 数値
[Description]: 
双曲線正弦関数を計算します。


■sit-for
[Type       ]: Function
[Arguments  ]: sit-for TIMEOUT &optional NO-REDRAW
[Package    ]: editor
[Seealso    ]: sleep-for , do-events , refresh-screen
[File       ]: builtin.l
[Section    ]: 日付・時間
[Description]: 
指定された秒数停止します。途中でキー入力があれば直ぐに再開します。

  TIMEOUT   : 停止する秒数を指定します。
  NO-REDRAW : 再開後に画面を再描画するかどうかを指定します。


■sixth
[Type       ]: Function
[Arguments  ]: sixth X
[Package    ]: lisp
[Seealso    ]: nth
[File       ]: list.l
[Section    ]: リスト
[Description]: 
list の 6 番目の要素を返します。

  (sixth X) = (nth 5 X)

使用例：
  (sixth '(1 2 3 4 5 6 7 8 9 0))
  => 6


■skip-chars-backward
[Type       ]: Function
[Arguments  ]: skip-chars-backward CHARS
[Package    ]: editor
[Seealso    ]: skip-chars-forward , skip-syntax-spec-backward
[File       ]: builtin.l
[Section    ]: 検索・正規表現
[Description]: 
skip-chars-forwardの後ろ向きのものです。


■skip-chars-forward
[Type       ]: Function
[Arguments  ]: skip-chars-forward CHARS
[Package    ]: editor
[Seealso    ]: skip-chars-backward , skip-syntax-spec-forward
[File       ]: builtin.l
[Section    ]: 検索・正規表現
[Description]: 
指定された文字群を前方方向にスキップします。

  CHARS : スキップする文字群を指定します。

skip-syntax-spec-forwardも似た動作をしますが、これはバッファのシンタック
ステーブルを見てスキップする文字を判断します。目的がはっきりしていれば、
skip-chars-forwardを使用しましょう。

使用例：
  ;;; 半角空白とタブ文字をスキップします。
  (skip-chars-forward " \t")


■skip-syntax-spec-backward
[Type       ]: Function
[Arguments  ]: skip-syntax-spec-backward SYNTAX-SPEC
[Package    ]: editor
[Seealso    ]: skip-syntax-spec-forward
[File       ]: builtin.l
[Section    ]: 検索・正規表現
[Description]: 
skip-syntax-spec-forwardの後ろ向きのものです。


■skip-syntax-spec-forward
[Type       ]: Function
[Arguments  ]: skip-syntax-spec-forward SYNTAX-SPEC
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: 検索・正規表現
[Description]: 
シンタックステーブルのカテゴリ基づいて文字を前方方向にスキップします。

skip-syntax-spec-(for|back)ward は、シンタックステーブルで指定
される文字のカテゴリに基づいて、指定されたカテゴリに属する文字
をスキップする関数です。カテゴリを表す文字は以下の通りです(7 割
ぐらいは Emacs と互換性あり)。

;  ' '(スペース)  空白文字
;  .              記号
;  (              開き括弧
;  )              閉じ括弧
;  $              TeX の $
;  "              文字列の区切り
;  <             1 文字コメントの開始
;  >             1 文字コメントの終了
;  /              C++ の // コメントの終了
;  \              エスケープ文字
;  '              単独で現れたときは記号、シンボルに隣接している場合はシンボル
;  _              シンボルを構成する文字
;  w              単語を構成する文字
;  k              いわゆる半角カナ
;  j              漢字
;  x              ゴミ文字
;  {              タグの開始
;  }              タグの終了

最初に '^' を指定すると、指定したカテゴリ以外という意味になりま
す(正規表現の[^...]と同じ)。カレントバッファのシンタックステー
ブルに基づくので、バッファのモードによって動きが変わってきます。
ちなみに、単語を構成する文字は一般に英数字で、シンボルを構成す
る文字は単語を構成する文字以外で識別子に使えそうな文字という意
味です。

文字の並びには意味はありません。"w_" と"_w" は同じものを意味します。

使用例：
  ;;; ワードの区切りに移動・英字
  (skip-syntax-spec-forward "w_")

  ;;; ワードの区切りに移動・漢字
  (skip-syntax-spec-forward "jk_")


■skip-token
[Type       ]: Function
[Arguments  ]: skip-token
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
多分シンボル構成文字と単語構成文字をスキップします。
（詳細不明）


■skip-white-backward
[Type       ]: Function
[Arguments  ]: skip-white-backward
[Package    ]: editor
[Seealso    ]: skip-white-forward
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
空白文字を後方にスキップします。
シンタックステーブル上でwhitespaceとして規定されている文字を後方に
スキップします。他にも影響する要素があるようですが詳細は不明。


■skip-white-forward
[Type       ]: Function
[Arguments  ]: skip-white-forward
[Package    ]: editor
[Seealso    ]: skip-white-backward
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
空白文字を前方にスキップします
シンタックステーブル上でwhitespaceとして規定されている文字を前方に
スキップします。他にも影響する要素があるようですが詳細は不明。


■sleep-for
[Type       ]: Function
[Arguments  ]: sleep-for TIMEOUT
[Package    ]: editor
[Seealso    ]: sit-for , refresh-screen
[File       ]: builtin.l
[Section    ]: 日付・時間
[Description]: 
指定された秒数停止します。途中でキー入力があっても直ぐには再開しません。

  TIMEOUT   : 停止する秒数を指定します。


■smart-indentation
[Type       ]: Function
[Arguments  ]: smart-indentation COLUMN
[Package    ]: editor
[Seealso    ]: *smart-indentation* , indent-to
[File       ]: cmds.l
[Section    ]: テキスト
[Description]: 
行頭からcolumn文字インデントします。
*smart-indentation*がtの時は適度にサボったりするみたいです。


■software-type
[Type       ]: Function
[Arguments  ]: software-type
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: システム
[Description]: 
ソフト名を返します。

使用例：  
  (software-type)
  => "xyzzy"


■software-version
[Type       ]: Function
[Arguments  ]: software-version
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: システム
[Description]: 
xyzzyのバージョンを返します。

使用例：
  (software-version)
  => "0.2.2.228"


■some
[Type       ]: Function
[Arguments  ]: some PREDICATE SEQUENCE &rest MORE-SEQUENCES
[Package    ]: lisp
[Seealso    ]: every , notany
[File       ]: sequence.l
[Section    ]: シーケンス
[Description]: 
SEQUENCEの先頭の要素から順番にPREDICATEを適用していき、PREDICATEが
非nilな値を返すと、その値をSOMEの戻り値としてすぐに終了します。
PREDICATEを満たす要素が見つからない時は nil を返します。

MORE-SEQUNCESが与えられた時、SEQUENCEの中で最も短いものの終わりまで実行されます。


■sort
[Type       ]: Function
[Arguments  ]: sort SEQUENCE PREDICATE &key :key
[Package    ]: lisp
[Seealso    ]: stable-sort
[Link       ]: [xyzzy:06221]
[Section    ]: シーケンス
[Description]: 
SEQUENCE を PREDICATE に従った順番に並び替えたものを返します。元の SEQUENCE
は変更されます。 sort は安定であることは保証されません。安定なソートが必要
なときは stable-sort を使いましょう。

  SEQUENCE  : ソートするシーケンスを指定します。
  PREDICATE : 比較関数を指定します。
  :key      : 比較対象を取得する関数を指定します。

使用例：
  (setq *test-seq* '(("foo") ("bar") ("hoge")))
  => (("foo") ("bar") ("hoge"))
  (setq *test-seq* (sort *test-seq* #'string-lessp :key #'car))
  => (("bar") ("foo") ("hoge"))
  *test-seq*
  => (("bar") ("foo") ("hoge"))
 
  (setq *test-seq* '(("foo") ("bar") ("hoge")))
  => (("foo") ("bar") ("hoge"))
  (sort *test-seq* #'string-lessp :key #'car)
  => (("bar") ("foo") ("hoge"))
  *test-seq*
  => (("foo") ("hoge"))

参考：
  [xyzzy:06221] (こっそり)バージョンアップのお知らせ
  ・sort のアルゴリズムを quick から merge に変更
  (比較回数が少ない分、merge の方が速いっぽい)。
  結果、stable-sort と同じになった(が、依存しないように)。
  従来は *たまたま* (eq list (sort list)) だったが、
  そうではなくなったので注意すること。


■spec-map
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: specific-command-prefix
[File       ]: keymap.l
[Section    ]: キーマップ
[Description]: 
C-c に続くキーシーケンスのバインディングを格納するキーマップです。


■special
[Type       ]: Misc
[Package    ]: lisp
[Seealso    ]: declare
[Section    ]: 変数と定数
[Description]: 
declare をごらんください。


■special-file-p
[Type       ]: Function
[Arguments  ]: special-file-p PATHNAME
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
PATHNAMEがデバイスファイル(CON, AUX, NUL, PRN, LPT1/2/3/4, COM1/2/3/4)か
否かを返します。
  t    デバイスファイルである。
  nil  デバイスファイルでない。


■special-form-p
[Type       ]: Function
[Arguments  ]: special-form-p SYMBOL
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 変数と定数
[Description]: 
シンボルが特殊形式かどうかを返します。

  SYMBOL : 判定するシンボル

戻り値
  nil      シンボルは特殊形式ではない。
  non-nil  シンボルは特殊形式

  ; 特殊形式を書き出してみる
  (do-all-symbols (i "end")
    (and (special-form-p i)
         (format t "~A~%" i)))
  interactive
  save-restriction
  save-excursion
  save-window-excursion
  *byte-code
  macrolet
  setq
  throw
  return-from
  progn
  let*
  go
  labels
  if
  multiple-value-call
  unwind-protect
  multiple-value-setq
  catch
  tagbody
  eval-when
  let
  multiple-value-bind
  block
  function
  quote
  multiple-value-prog1
  flet
  =>"end"


■specific-command-prefix
[Type       ]: Function
[Arguments  ]: specific-command-prefix
[Package    ]: editor
[Seealso    ]: spec-map
[File       ]: keymap.l
[Section    ]: キーマップ
[Description]: 
C-c プレフィックスです。 [C-c]

specific-command-prefix の関数セルは普通のコマンドではなく spec-map と
いうキーマップを保持しています。


■split-line
[Type       ]: Function
[Arguments  ]: split-line
[Package    ]: editor
[File       ]: cmds.l
[Section    ]: テキスト
[Description]: 
カーソル位置から行末までのテキストを縦に 1 行下げ、2 行に分割します。[ESC C-o]


■split-string
[Type       ]: Function
[Arguments  ]: split-string STRING SEPARATOR &optional IGNORE-EMPTY CHAR-BAG
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: 文字列
[Description]: 
文字列を指定されたセパレータ文字で分割したリストにします。
セパレータ文字は含まれません。

  STRING       : 分割する文字列を指定します。
  SEPARATOR    : セパレータ文字を指定します。
  IGNORE-EMPTY : 長さが0の文字列も（つまり、セパレータ文字が連続するような場合）
                 を許すかどうかを指定します。
  CHAR-BAG     : 分割した後の文字列の前後をトリムするための文字群を指定します。
  
使用例：
  (split-string "121,,12321" #\,)       => ("121" "12321")
  (split-string "121,,12321" #\, t)     => ("121" "" "12321")
  (split-string "121,,12321" #\, t "1") => ("2" "" "232")
  (split-string "121,,12321" #\, t "3") => ("121" "" "12321")


■split-window
[Type       ]: Function
[Arguments  ]: split-window &optional ARG VERTICAL
[Package    ]: editor
[Seealso    ]: split-window-vertically
[File       ]: builtin.l
[Section    ]: ウィンドウ
[Description]: 
画面を二分割します。分割行数と分割方向を指定可能です。

  ARG      : 分割する行数を指定します。
  VERTICAL : 縦方向に分割します。
        t       横に二分割します。
        nil     縦に二分割します。

分割後にカレントになるウィンドウには注意が必要です。

  (split-window 20 t)
  => +20-+---------+    
     |   |         |
     +↑-+---------+
      こちらにカーソルがくる
 
  (split-window -20 t)
  => +---------+20-+
     |         |   |
     +---------+↑-+
                こちらにカーソルがくる

  (split-window 20 nil)
  => +-------------+    
     |             ←こちらにカーソルがくる
     +-------------+    
     +-------------+    
      
  (split-window -20 nil)
  => +-------------+    
     +-------------+    
     |             ←こちらにカーソルがくる
     +-------------+


■split-window-vertically
[Type       ]: Function
[Arguments  ]: split-window-vertically &optional ARG
[Package    ]: editor
[Seealso    ]: split-window
[File       ]: window.l
[Section    ]: ウィンドウ
[Description]: 
多分、 split-window の横に二分割するのと同じです。


■sqrt
[Type       ]: Function
[Arguments  ]: sqrt NUMBER
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
平方根の値を返します。


■stable-sort
[Type       ]: Function
[Arguments  ]: stable-sort SEQUENCE PREDICATE &key :key
[Package    ]: lisp
[Seealso    ]: sort
[Link       ]: [xyzzy:06221]
[File       ]: builtin.l
[Section    ]: シーケンス
[Description]: 
SEQUENCE を PREDICATE に従った順番に並び替えたものを返します。元の SEQUENCE
は変更されます。 stable-sort は安定なソートを行います。つまり PREDICATE によっ
て同順と見なされる要素間の順序は、ソート前と同じであることが保証されます。

  SEQUENCE  : ソートするシーケンスを指定します。
  PREDICATE : 比較関数を指定します。
  :key      : 比較対象を取得する関数を指定します。

使用例：
  (setq *test-seq* '(("foo") ("bar") ("hoge")))
  => (("foo") ("bar") ("hoge"))
  (setq *test-seq* (stable-sort *test-seq* #'string-lessp :key #'car))
  => (("bar") ("foo") ("hoge"))
  *test-seq*
  => (("bar") ("foo") ("hoge"))
 
  (setq *test-seq* '(("foo") ("bar") ("hoge")))
  => (("foo") ("bar") ("hoge"))
  (stable-sort *test-seq* #'string-lessp :key #'car)
  => (("bar") ("foo") ("hoge"))
  *test-seq*
  => (("foo") ("hoge"))


■standard-char-p
[Type       ]: Function
[Arguments  ]: standard-char-p CHAR
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
文字が、改行文字もしくは [ -~] かどうかを判定します。
表示可能な文字は SJIS 文字コードで 10, 32-126 です。

  CHAR : 判定する文字

戻り値：
  t   standard-char である
  nil standard-char でない

補足：
  ;;; 改行文字(SJIS 10) 以外の standard-char 文字一覧出力 (SJIS 32-126)
  (do ((i (char-code #\SPC) (1+ i)))
      ((= i (char-code #\DEL)))
    (format t "~A" (code-char i)))


■start-selection
[Type       ]: Function
[Arguments  ]: start-selection TYPE &optional TEMPORARY POINT
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: リージョン
[Description]: 
選択領域の範囲指定を開始します。

  TYPE：選択領域の範囲指定の方法を指定します。 
        1の場合         範囲選択を行で行います。
        2の場合         範囲選択を文字で行います。
        3の場合         範囲選択を矩形で行います。

  TEMPORARY：一時的なものかどうかを指定します。
        tの場合         キー入力されると範囲指定を解除します。
        nilの場合       カーソル移動に応じて範囲を変更します。

使用例：
  ;;; 矩形で範囲指定する。
  (start-selection 3 nil)
  => t


■start-selection-as-line
[Type       ]: Function
[Arguments  ]: start-selection-as-line
[Package    ]: editor
[Seealso    ]: start-selection-as-region
[File       ]: select.l
[Section    ]: リージョン
[Description]: 
行選択モードを開始します。[F6]
セレクションが存在する場合は、セレクションを解除します。


■start-selection-as-region
[Type       ]: Function
[Arguments  ]: start-selection-as-region
[Package    ]: editor
[Seealso    ]: start-selection-as-line
[File       ]: select.l
[Section    ]: リージョン
[Description]: 
文字選択モードを開始します。[S-F6]
文字選択モードが開始されている場合は、矩形選択モードに切替えます。
矩形選択モードが開始されている場合は、文字選択モードに切替えます。
行選択モードが開始されている場合は、選択モードを解除します。


■start-timer
[Type       ]: Function
[Arguments  ]: start-timer INTERVAL FN &optional ONE-SHOT-P
[Package    ]: editor
[Seealso    ]: stop-timer
[File       ]: builtin.l
[Section    ]: 日付・時間
[Description]: 
タイマーを設定します。INTERVAL秒後に、FNがfuncallされます。

  INTERVAL   : 何秒後に関数を実行するかを指定します。
  FN         : 実行する関数を指定します。
  ONE-SHOT-P : 継続して作動させるかどうかを指定します。
        nil      継続して作動させます。
        non-nil  1 回だけ作動させます。
  
使用例：
  ;; パターンを循環参照で作る
  (setq pat '(#\― #\／ #\｜ #\＼))
  => pat
  (setf (cdr (last pat)) pat)
  => #1=(#\― #\／ #\｜ #\＼ . #1#)
  (defun func () (setq pat (cdr pat)) (message "~A" (car pat)))
  => func
  ;; 動かす時は…
  (start-timer 0.2 'func)
  => t  
  ;; 止める時は…
  (stop-timer 'func)
  => t


■start-xyzzy-server
[Type       ]: Function
[Arguments  ]: start-xyzzy-server
[Package    ]: editor
[Seealso    ]: stop-xyzzy-server
[File       ]: builtin.l
[Section    ]: システム
[Description]: 
stop-xyzzy-serverの逆です。複数のxyzzy-serverが立ち上がっている状態で
xyzzycli.exe が実行された場合、最後にアクティブになったほうが選択され
るようです。


■step
[Type       ]: Macro
[Arguments  ]: step FORM
[Package    ]: lisp
[File       ]: misc.l
[Section    ]: 制御構造
[Description]: 
ステップ実行を行います。


■stop-selection
[Type       ]: Function
[Arguments  ]: stop-selection
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
セレクションを解除します。


■stop-timer
[Type       ]: Function
[Arguments  ]: stop-timer FN
[Package    ]: editor
[Seealso    ]: start-timer
[File       ]: builtin.l
[Section    ]: 日付・時間
[Description]: 
設定したタイマーを停止します。


■stop-xyzzy-server
[Type       ]: Function
[Arguments  ]: stop-xyzzy-server
[Package    ]: editor
[Seealso    ]: start-xyzzy-server
[File       ]: builtin.l
[Section    ]: システム
[Description]: 
xyzzycli.exeに反応しないようにします。


■store-match-data
[Type       ]: Function
[Arguments  ]: store-match-data DATA
[Package    ]: editor
[Seealso    ]: scan-buffer , match-data
[File       ]: builtin.l
[Section    ]: 検索・正規表現
[Description]: 
match-data で退避しておいた検索時点の状態を戻します。


■streamp
[Type       ]: Function
[Arguments  ]: streamp OBJECT
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 入出力
[Description]: 
OBJECTがストリームか否かを返します。
  t    OBJECTはストリームである。
  nil  OBJECTはストリームでない。


■string
[Type       ]: Function
[Arguments  ]: string X
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 文字列
[Description]: 
Xが文字列ならそれを返します。シンボルならその名前を返します。

使用例：
  (string "foo")
  => "foo"
  (string 'bar)
  => "bar"


■string-capitalize
[Type       ]: Function
[Arguments  ]: string-capitalize STRING &key :start :end
[Package    ]: lisp
[Seealso    ]: nstring-capitalize
[File       ]: builtin.l
[Section    ]: 文字列
[Description]: 
STRINGの内部の単語の先頭を大文字に、それ以外を小文字にした文字列を返します。

使用例：
  (string-capitalize "xYZzY")
  => "Xyzzy"  
  (string-capitalize "tHis iS a pEn.")
  => "This Is A Pen."


■string-downcase
[Type       ]: Function
[Arguments  ]: string-downcase STRING &key :start :end
[Package    ]: lisp
[Seealso    ]: nstring-downcase
[File       ]: builtin.l
[Section    ]: 文字列
[Description]: 
STRINGを小文字にした文字列を返します。元のSTRINGは変更されません。

使用例：
  (string-downcase "XyZzY")
  => "xyzzy"
  (string-downcase "XYZZY" :start 2 :end 4)
  => "XYzzY"


■string-equal
[Type       ]: Function
[Arguments  ]: string-equal STRING1 STRING2 &key :start1 :end1 :start2 :end2
[Package    ]: lisp
[Seealso    ]: string=
[File       ]: builtin.l
[Section    ]: 文字列
[Description]: 
STRING1とSTRING2を大文字小文字に関係なく比較して等しければt、そうでなけ
ればnilを返します。

使用例：
  (string-equal "foo" "foo")
  => t
  (string-equal "foo" "Foo")
  => t


■string-greaterp
[Type       ]: Function
[Arguments  ]: string-greaterp STRING1 STRING2 &key :start1 :end1 :start2 :end2
[Package    ]: lisp
[Seealso    ]: string>
[File       ]: builtin.l
[Section    ]: 文字列
[Description]: 
STRING1とSTRING2を大文字小文字に関係なく比較して、等しければ一致しない文
字のインデックスを、そうでなければnilを返します。

使用例：
  (string-greaterp "ac" "ab")
  => 1
  (string-greaterp "ac" "ac")
  => nil
  (string-greaterp "AC" "ab")
  => 1


■string-left-trim
[Type       ]: Function
[Arguments  ]: string-left-trim CHARACTER-BAG STRING
[Package    ]: lisp
[Seealso    ]: string-trim , string-right-trim
[File       ]: builtin.l
[Section    ]: 文字列
[Description]: 
文字列の先頭から指定した文字群を削除します。

  STRING         : 文字列
  CHARACTGER-BAG : 削除する文字群です。
  
使用例：
  ;;;  先頭の"/"や"\"を取り除きます。
  (string-left-trim "/\\" "/foo/bar/zzz.txt/")
  => "foo/bar/zzz.txt/"


■string-lessp
[Type       ]: Function
[Arguments  ]: string-lessp STRING1 STRING2 &key :start1 :end1 :start2 :end2
[Package    ]: lisp
[Seealso    ]: string<
[File       ]: builtin.l
[Section    ]: 文字列
[Description]: 
STRING1とSTRING2を大文字小文字に関係なく比較して条件に合えば一致しない文
字のインデックスを、そうでなければnilを返します。

使用例：  
  (string-lessp "Aa" "ab")
  => 1
  (string-lessp "ac" "AB")
  => nil


■string-match
[Type       ]: Function
[Arguments  ]: string-match REGEXP STRING &optional START END
[Package    ]: editor
[Seealso    ]: string-matchp , looking-at , 正規表現の表記
[File       ]: builtin.l
[Section    ]: 文字列
[Description]: 
指定された文字列が正規表現に一致するかどうかを返します。

  REGEXP : 正規表現
  STRING : チェックする文字列
  START  : 文字列の開始位置
  END    : 文字列の終了位置

--- muleの説明 ---
この関数は、(string 中で)正規表現 regexp に最初にマッチする場所のインデ
ックスか、 (マッチしない場合) nil を返します。 start が non-nil の場合、
サーチは string 中のそのインデックスから行ないます。 

マッチ部分の先の(最初の)文字のインデックスは (match-end 0) で作られます。 
0 でないアーギュメントを持つ match-end と match-beginning はパターン中の
括弧構成(訳注：parenthesis constructs) にマッチするサブストリングのイン
デックスを与えます。 

  (string-match "X[a-z]*Y" "X1 Y Xab cY XabcY")
  => 12
  (match-end 0)
  => 17

互換性：
  muleあり。
  Common Lispなし。


■string-matchp
[Type       ]: Function
[Arguments  ]: string-matchp REGEXP STRING &optional START END
[Package    ]: editor
[Seealso    ]: string-match
[File       ]: builtin.l
[Section    ]: 文字列
[Description]: 
| string-match と string-matchp とはどこがどう
| 違うのでしょう？

p 付きの方は大文字小文字を区別しません。


■string-not-equal
[Type       ]: Function
[Arguments  ]: string-not-equal STRING1 STRING2 &key :start1 :end1 :start2 :end2
[Package    ]: lisp
[Seealso    ]: string-equal
[File       ]: builtin.l
[Section    ]: 文字列
[Description]: 
STRING1とSTRING2を大文字小文字に関係なく比較して等しくなければt、そうで
なければnilを返します。string-equalの反対の機能です。


■string-not-greaterp
[Type       ]: Function
[Arguments  ]: string-not-greaterp STRING1 STRING2 &key :start1 :end1 :start2 :end2
[Package    ]: lisp
[Seealso    ]: string<=
[File       ]: builtin.l
[Section    ]: 文字列
[Description]: 
STRING1とSTRING2を大文字小文字に関係なく比較して条件に合えば一致しない文
字のインデックスを、そうでなければnilを返します。


■string-not-lessp
[Type       ]: Function
[Arguments  ]: string-not-lessp STRING1 STRING2 &key :start1 :end1 :start2 :end2
[Package    ]: lisp
[Seealso    ]: string>=
[File       ]: builtin.l
[Section    ]: 文字列
[Description]: 
STRING1とSTRING2を大文字小文字に関係なく比較して条件に合えば一致しない文
字のインデックスを、そうでなければnilを返します。


■string-rectangle
[Type       ]: Function
[Arguments  ]: string-rectangle P1 P2 STRING
[Package    ]: editor
[Seealso    ]: string-rectangle-selection , operate-on-rectangle
[File       ]: rectangl.l
[Section    ]: リージョン
[Description]: 
P1 と P2 で指定される矩形領域の各行を文字列 STRING で置き換えます。


■string-rectangle-selection
[Type       ]: Function
[Arguments  ]: string-rectangle-selection STRING
[Package    ]: editor
[Seealso    ]: string-rectangle , operate-on-rectangle-selection
[File       ]: select.l
[Section    ]: リージョン
[Description]: 
矩形選択されたセレクションの各行を文字列 STRING で置き換えます。


■string-replace-match
[Type       ]: Function
[Arguments  ]: string-replace-match STRING REPLACEMENT
[Package    ]: editor
[Seealso    ]: string-match
[File       ]: builtin.l
[Section    ]: 文字列
[Description]: 
string-matchで検索した結果を使って文字列の置換を行います。

  STRING      : string-matchで指定した文字列を指定します。
  REPLACEMENT : 置換する文字列を指定します。
                REPLACEには正規表現に部分\1-\9を含めることが可能です。

使用例：
  ;;; 文字列を置換してみる。
  (setq str "01356:00001:error message")
  => "01356:00001:error message"
  (when (string-match "\\([0-9]+\\):\\([0-9]+\\):\\(.*\\)" str)
    (setq str (string-replace-match str "\\1,\\3")))
  => "01356,error message"


■string-right-trim
[Type       ]: Function
[Arguments  ]: string-right-trim CHARACTER-BAG STRING
[Package    ]: lisp
[Seealso    ]: string-trim , string-left-trim
[File       ]: builtin.l
[Section    ]: 文字列
[Description]: 
文字列の末尾から指定した文字群を削除します。

  STRING         : 文字列
  CHARACTGER-BAG : 削除する文字群です。
  
使用例：
  ;;;  末尾の"/"や"\"を取り除きます。
  (string-right-trim "/\\" "/foo/bar/zzz.txt/")
  => "/foo/bar/zzz.txt"


■string-trim
[Type       ]: Function
[Arguments  ]: string-trim CHARACTER-BAG STRING
[Package    ]: lisp
[Seealso    ]: string-right-trim , string-left-trim
[File       ]: builtin.l
[Section    ]: 文字列
[Description]: 
文字列の前後から指定した文字群を削除します。

  STRING         : 文字列
  CHARACTGER-BAG : 削除する文字群です。
  
使用例：
  ;;;  前後の"/"や"\"を取り除きます。
  (string-trim "/\\" "/foo/bar/zzz.txt/")
  => "foo/bar/zzz.txt"


■string-upcase
[Type       ]: Function
[Arguments  ]: string-upcase STRING &key :start :end
[Package    ]: lisp
[Seealso    ]: nstring-upcase
[File       ]: builtin.l
[Section    ]: 文字列
[Description]: 
STRINGを大文字にした文字列を返します。元のSTRINGは変更されません。

使用例：
  (string-upcase "xyzzy")
  => "XYZZY"
  (string-upcase "xyzzy" :start 2 :end 4)
  => "xyZZy"


■string/=
[Type       ]: Function
[Arguments  ]: string/= STRING1 STRING2 &key :start1 :end1 :start2 :end2
[Package    ]: lisp
[Seealso    ]: string=
[File       ]: builtin.l
[Section    ]: 文字列
[Description]: 
STRING1とSTRING2を比較して等しくなければt、そうでなければnilを返します。
英字の大文字と小文字は区別します。string=の反対の機能です。


■string<
[Type       ]: Function
[Arguments  ]: string< STRING1 STRING2 &key :start1 :end1 :start2 :end2
[Package    ]: lisp
[Seealso    ]: string-lessp
[File       ]: builtin.l
[Section    ]: 文字列
[Description]: 
STRING1とSTRING2を比較して条件に合えば一致しない文字のインデックスを、そ
うでなければnilを返します。

使用例：
  (string< "aa" "aa")
  => nil
  (string< "aa" "ab")
  => 1


■string<=
[Type       ]: Function
[Arguments  ]: string<= STRING1 STRING2 &key :start1 :end1 :start2 :end2
[Package    ]: lisp
[Seealso    ]: string-not-greaterp
[File       ]: builtin.l
[Section    ]: 文字列
[Description]: 
STRING1とSTRING2を比較して条件に合えば一致しない文字のインデックスを、そ
うでなければnilを返します。


■string=
[Type       ]: Function
[Arguments  ]: string= STRING1 STRING2 &key :start1 :end1 :start2 :end2
[Package    ]: lisp
[Seealso    ]: string-equal
[File       ]: builtin.l
[Section    ]: 文字列
[Description]: 
STRING1とSTRING2を比較して等しければt、そうでなければnilを返します。
英字の大文字と小文字は区別します。

使用例：
  (string= "foo" "foo")
  => t
  (string= "foo" "Foo")
  => nil
  (string= "together" "frog" :start1 1 :end1 3 :start2 2)
  => t

参考：
  case-sensitive        case-insensitive
  ----                  ----
  string=               string-equal
  string/=              string-not-equal
  string<               string-lessp
  string>               string-greaterp
  string<=              string-not-greaterp
  string>=              string-not-lessp


■string>
[Type       ]: Function
[Arguments  ]: string> STRING1 STRING2 &key :start1 :end1 :start2 :end2
[Package    ]: lisp
[Seealso    ]: string-greaterp
[File       ]: builtin.l
[Section    ]: 文字列
[Description]: 
STRING1とSTRING2を比較して条件に合えば一致しない文字のインデックスを、そ
うでなければnilを返します。

使用例：
  (string> "ac" "ab")
  => 1
  (string> "ac" "ac")
  => nil
  (string> "AC" "ab")
  => nil


■string>=
[Type       ]: Function
[Arguments  ]: string>= STRING1 STRING2 &key :start1 :end1 :start2 :end2
[Package    ]: lisp
[Seealso    ]: string-not-lessp
[File       ]: builtin.l
[Section    ]: 文字列
[Description]: 
STRING1とSTRING2を比較して条件に合えば一致しない文字のインデックスを、そ
うでなければnilを返します。


■stringp
[Type       ]: Function
[Arguments  ]: stringp OBJECT
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
OBJECTがstringならt、それ以外ならnilを返します。


■sub-directory-p
[Type       ]: Function
[Arguments  ]: sub-directory-p DIRECTORY PARENT
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
DIRECTORYがPARENTのサブディレクトリならt、そうでなければnilを返します。

使用例： 
  (sub-directory-p "c:/windows/system" "c:/windows")
  => t


■sublis
[Type       ]: Function
[Arguments  ]: sublis ALIST TREE &key :test :test-not :key
[Package    ]: lisp
[Seealso    ]: subst , nsublis
[File       ]: builtin.l
[Section    ]: リスト
[Description]: 
TREE の中で ALIST の :key との :test を満たすものを VALUE に置き換えます。
元の TREE はそのままです。

使用例：
  ;;; a->1、b->2に変更
  (sublis '((a . 1) (b . 2)) '(a b c))
  => (1 2 c)


■subseq
[Type       ]: Function
[Arguments  ]: subseq SEQUENCE START &optional END
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: シーケンス
[Description]: 
SEQUENCEのSTART番目からENDもしくは最後までの新しいsequenceを返します。


■subsetp
[Type       ]: Function
[Arguments  ]: subsetp LIST1 LIST2 &rest REST &key :test :test-not :key
[Package    ]: lisp
[File       ]: list.l
[Section    ]: リスト
[Description]: 
LIST1 が LIST2 のサブセットなら t、そうでないなら nil を返します。

使用例:
  (subsetp '(1 5 7) '(1 3 5 7 9))
  => t
  (subsetp '(1 5 8) '(1 3 5 7 9))
  => nil


■subst
[Type       ]: Function
[Arguments  ]: subst NEW OLD TREE &key :test :test-not :key
[Package    ]: lisp
[Seealso    ]: sublis , nsubst , subst-if , subst-if-not
[File       ]: builtin.l
[Section    ]: リスト
[Description]: 
TREEの中でOLDをNEWに置き換えたTREEのコピーを返します。
元のTREEはそのままです。

使用例：
  ;;; 階層のあるツリーをsubstしてみる。aはそのまま
  (setq a '((1 2) ((1 3) (1 4))))       => ((1 2) ((1 3) (1 4)))
  (subst 5 1 a)                         => ((5 2) ((5 3) (5 4)))
  a                                     => ((1 2) ((1 3) (1 4)))


■subst-if
[Type       ]: Function
[Arguments  ]: subst-if NEW TEST TREE &key :key
[Package    ]: lisp
[Seealso    ]: subst-if-not , subst
[File       ]: builtin.l
[Section    ]: リスト
[Description]: 
TREEの中でTESTを満たすものがあればNEWに置き換えたものを返します。
TREEはそのままです。

  NEW  : 置き換える要素
  TEST : 置き換えるかどうかを判定するテスト
         non-nilを返したら置き換えます。
  TREE : 対象のツリー

TESTにはTREEの部分リストと要素を順番に引数として与えるので、必ずしも末端
の要素だけが置き換えの対象とはなりません。例えば、こんな感じで呼び出され
ます。

  ;;; funcで判定する場合
  (subst-if 0 #'func '(1 2 3))

  ;;; funcに引数として与えられる値(1 2 3だけじゃない)
  (1 2 3) 1 (2 3) 2 (3) 3 nil

下の使用例の様に事前の型チェックをして回避します。

使用例：
  ;;; 適当なツリーを用意して、その要素が奇数ならば0に置き換える。
  (setq a '((1 2) ((1 3) (1 (1 3)))))
  => ((1 2) ((1 3) (1 (1 3))))
  (subst-if 0 #'(lambda (x) (and (integerp x) (oddp x))) a)
  => ((0 2) ((0 0) (0 (0 0))))
  a
  => ((1 2) ((1 3) (1 (1 3))))


■subst-if-not
[Type       ]: Function
[Arguments  ]: subst-if-not NEW TEST TREE &key :key
[Package    ]: lisp
[Seealso    ]: subst-if , subst
[File       ]: builtin.l
[Section    ]: リスト
[Description]: 
TREEの中でTESTを満たさないものがあればNEWに置き換えたものを返します。
TREEはそのままです。

  NEW  : 置き換える要素
  TEST : 置き換えるかどうかを判定するテスト
         nilを返したら置き換えます。
  TREE : 対象のツリー

TESTの引数についてはsubst-ifを参照して下さい。

使用例：
  ;;; 適当なツリーを用意して、数字以外のものがあれば0に変換する。
  (setq a '((123 "abc") '(456 "123") (789 #\a)))
  => ((123 "abc") '(456 "123") (789 #\a))
  (subst-if-not 0 #'(lambda (x) (or (listp x) (integerp x))) a)
  => ((123 0) (0 (456 0)) (789 0))
  a
  => ((123 "abc") '(456 "123") (789 #\a))


■substitute
[Type       ]: Function
[Arguments  ]: substitute NEWITEM OLDITEM SEQUENCE &key :from-end :test :test-not :start :end :count :key
[Package    ]: lisp
[Seealso    ]: substitute-if , substitute-if-not , nsubstitute , subst , substitute-string , sublis
[File       ]: sequence.l
[Section    ]: シーケンス
[Description]: 
SEQUENCE に対して OLDITEM との :test を満足する要素を NEWITEM に置き換え
た列を返します。元の SEQUENCE は変更されませんが、戻り値と一部を共有する
かもしれません。

  :test     : テストを行う2項演算子
  :start    : 開始位置。デフォルトは0で非負の整数
  :end      : 終了位置。デフォルトはnilで、nilの場合は列の長さを指定した
              場合と等しい動作。
  :count    : 置き換える最大の回数。
  :from-end : nil ならば先頭から、non-nil で末尾から置換を行う。 :count
              が与えられた時のみ意味を持つ。


■substitute-if
[Type       ]: Function
[Arguments  ]: substitute-if NEWITEM TEST SEQUENCE &key :from-end :start :end :count :key
[Package    ]: lisp
[Seealso    ]: subst-if , substitute , substitute-if-not , nsubstitute-if
[File       ]: sequence.l
[Section    ]: シーケンス
[Description]: 
SEQUENCEに対してTESTを満足する要素をNEWITEMに置き換えた列を返します。
元のSEQUENCEは変更されませんが、戻り値と一部を共有するかもしれません。

  TEST      : テストを行う単項演算子
  :start    : 開始位置。デフォルトは0で非負の整数
  :end      : 終了位置。デフォルトはnilで、nilの場合は列の長さを指定した
              場合と等しい動作。
  :count    : 置き換える最大の回数。
  :from-end : nil ならば先頭から、non-nil で末尾から置換を行う。 :count
              が与えられた時のみ意味を持つ。


■substitute-if-not
[Type       ]: Function
[Arguments  ]: substitute-if-not NEWITEM TEST SEQUENCE &key :from-end :start :end :count :key
[Package    ]: lisp
[Seealso    ]: subst-if-not , substitute , substitute-if , nsubstitute-if-not
[File       ]: sequence.l
[Section    ]: シーケンス
[Description]: 
SEQUENCEに対してTESTを満足しない要素をNEWITEMに置き換えた列を返します。
元のSEQUENCEは変更されませんが、戻り値と一部を共有するかもしれません。

  TEST      : テストを行う単項演算子
  :start    : 開始位置。デフォルトは0で非負の整数
  :end      : 終了位置。デフォルトはnilで、nilの場合は列の長さを指定した
              場合と等しい動作。
  :count    : 置き換える最大の回数。
  :from-end : nil ならば先頭から、non-nil で末尾から置換を行う。 :count
              が与えられた時のみ意味を持つ。


■substitute-string
[Type       ]: Function
[Arguments  ]: substitute-string STRING PATTERN REPLACEMENT &key :case-fold :start :end :skip :count
[Package    ]: editor
[Seealso    ]: replace-string , substitute , replace , quote-string
[File       ]: builtin.l
[Section    ]: 文字列
[Description]: 
文字列中のパターンを置換して返します。

使用例：
  ;;; 部分文字列を置換する。
  (substitute-string "Hogehoge" "ho" "pa")
  => "Hogepage"

  ;;; 大文字小文字を区別せず置換する。
  (substitute-string "Hogehoge" "ho" "pa" :case-fold t)
  => "pagepage"

  ; 正規表現・メタ文字の利用
  (substitute-string "abc123cdef" "[^0-9]*\\([0-9]+\\).*" "\\1 in \\&")
  =>"123 in abc123cdef"


■substring
[Type       ]: Function
[Arguments  ]: substring STRING START &optional END
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 文字列
[Description]: 
指定された文字列の部分文字列を返します。

--- muleの説明 ---
この関数は、 string 中の start の文字から始め end の文字で終るストリング
を (新しく)返します。負の数字は、(ストリングの最後の文字を -1 として) ス
トリングの終りから数えます。 

start と end のどちらかが integer でなかったり、 start が end の後の文字
を指していたり、どちらかの integer がストリングの範囲を出てしまっている
場合、エラーになります。 

  (substring "abcdefg" 0)
  => "abcdefg"
  (substring "abcdefg" 0 2)
  => "ab"
  (substring "abcdefg" 5 nil)
  => "fg"
  (substring "abcdefg" -1 nil)
  => "g"

互換性：
  Common Lispにはなし(commonではsubseqというらしい）
  muleあり。


■subtypep
[Type       ]: Function
[Arguments  ]: subtypep TYPE1 TYPE2
[Package    ]: lisp
[File       ]: typespec.l
[Section    ]: データ型
[Description]: 
ある型が他の型の副型かどうか調べて多値で返します。
（詳細不明）

  TYPE1 : 副型を指定します。
  TYPE2 : 型を指定します。

  t   t         TYPE1は明確にTYPE2の副型
  nil t         TYPE1は明確にTYPE1の副型ではない
  nil nil       関係を判断できない

使用例：
  ;;; サブタイプかどうかを調べる。
  (subtypep 'single-float 'number)
  => (single-float double-float long-float)
  (subtypep 'cons 'number)
  => nil


■svref
[Type       ]: Accessor
[Arguments  ]: svref SIMPLE-VECTOR INDEX
[Package    ]: lisp
[Seealso    ]: aref , setf , vector
[File       ]: builtin.l
[Section    ]: 配列
[Description]: 
aref と同じですが、 svref はベクトル(一次元配列)のみにアクセスできます。つ
まり、ベクトル hoge があるとき、 (svref hoge 2) は (aref hoge 2) と同じ意味で
す。ただし、 foo が2x2配列の場合は、 svref でアクセスすることはできません。


■switch-pseudo-frame
[Type       ]: Function
[Arguments  ]: switch-pseudo-frame NAME
[Package    ]: editor
[Seealso    ]: select-pseudo-frame , pseudo-frame-selector
[File       ]: pframe.l
[Section    ]: ウィンドウ
[Description]: 
対話的にフレームを選択します。


■switch-to-buffer
[Type       ]: Function
[Arguments  ]: switch-to-buffer BUFFER &optional NOWARN
[Package    ]: editor
[Seealso    ]: find-buffer , get-buffer-create , verify-visited-file-modtime
[File       ]: buffer.l
[Section    ]: バッファ
[Description]: 
指定されたバッファに移動し、ウィンドウに移動します。バッファが存在しなけ
ればバッファを作成します。そのバッファを操作中のウィンドウに表示するとこ
ろ以外は、get-buffer-createのinteractive版と言えます。

使用例：
  ;;; *calc*があろうとなかろうと*calc*に移動する。
  (switch-to-buffer "*calc*")
  => #<buffer: *calc*>


■switch-to-buffer-other-window
[Type       ]: Function
[Arguments  ]: switch-to-buffer-other-window BUFFER &optional NOWARN
[Package    ]: editor
[Seealso    ]: switch-to-buffer
[File       ]: buffer.l
[Section    ]: バッファ
[Description]: 
他のウィンドウに移ってからバッファを切り替えます。
ウィンドウ数が1の時は、ウィンドウを分割します。

  BUFFER : このバッファにカレントウィンドウを切り替えます。
  NOWARN : non-nilならば、指定したバッファが他のアプリケーションにより更
           新されているかのチェックを行いません。


■symbol-function
[Type       ]: Function
[Arguments  ]: symbol-function SYMBOL
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 変数と定数
[Description]: 
シンボルに束縛された関数定義を返します。

  SYMBOL : 関数定義を取得するシンボル名

使用例：
  ;;; 関数定義の取得
  (symbol-function 'foo)
  => 関数が定義されていません: foo
  (defun foo (x) (* x 2))
  => foo
  (symbol-function 'foo)
  => #<lexical-closure: foo>


■symbol-name
[Type       ]: Function
[Arguments  ]: symbol-name SYMBOL
[Package    ]: lisp
[Seealso    ]: intern
[File       ]: builtin.l
[Section    ]: シンボル
[Description]: 
シンボルの名前を印字用の文字列として返します。

使用例：
  ;;; シンボルxyzzyを文字列にしてみる。
  (symbol-name 'xyzzy)
  => "xyzzy"


■symbol-package
[Type       ]: Function
[Arguments  ]: symbol-package SYMBOL
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: シンボル
[Description]: 
シンボルが属するパッケージを返します。
make-symbolとかgensymで生成されたシンボルはどのパッケージにも属しません。

使用例：
  ;;; uninternedなシンボルとそうでないシンボルを作ってみる。
  (setq foo 2)                          => foo
  (symbol-package 'foo)                 => #<package: user>
  
  (setq bar (make-symbol "bar"))        => #:bar
  (set bar 3)                           => 3
  (symbol-value bar)                    => 3
  (symbol-package bar)                  => nil


■symbol-plist
[Type       ]: Function
[Arguments  ]: symbol-plist SYMBOL
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: シンボル
[Description]: 
シンボルのプロパティリストを返す。

使用例：
  ;;; シンボルのプロパティリストを見てみる。
  (symbol-plist 'xyzzy)         => nil
  (setf (get 'xyzzy 'foo) 1)    => 1
  (symbol-plist 'xyzzy)         => (foo 1)


■symbol-value
[Type       ]: Function
[Arguments  ]: symbol-value SYMBOL
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: シンボル
[Description]: 
シンボルに束縛されている値を返します。

  SYMBOL : 値を返すシンボル

使用例：
  ;;; fooというシンボルの値を返してみる。
  (set 'foo 3)          => 3
  (symbol-value 'foo)   => 3
  foo                   => 3


■symbolp
[Type       ]: Function
[Arguments  ]: symbolp OBJECT
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
OBJECTがsymbolならt、それ以外ならnilを返します。

  (symbolp x) == (typep x 'symbol)


■syntax-c++-comment-p
[Type       ]: Function
[Arguments  ]: syntax-c++-comment-p CHAR &optional SYNTAX-TABLE
[Package    ]: editor
[Seealso    ]: set-syntax-start-c++-comment
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
文字CHARがC++スタイルのコメントの開始文字として規定されているかを返します。

  t     開始文字である。
  nil   開始文字でない。


■syntax-close-p
[Type       ]: Function
[Arguments  ]: syntax-close-p CHAR &optional SYNTAX-TABLE
[Package    ]: editor
[Seealso    ]: set-syntax-match
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
文字CHARが括弧などの終了文字として規定されているかを返します。

  t     終了文字である。
  nil   終了文字でない。


■syntax-close-tag-p
[Type       ]: Function
[Arguments  ]: syntax-close-tag-p CHAR &optional SYNTAX-TABLE
[Package    ]: editor
[Seealso    ]: set-syntax-close-tag
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
文字CHARがタグの終了文字として規定されているかを返します。

  t     タグの終了文字である。
  nil   タグの終了文字でない。


■syntax-end-c++-comment-p
[Type       ]: Function
[Arguments  ]: syntax-end-c++-comment-p CHAR &optional SYNTAX-TABLE
[Package    ]: editor
[Seealso    ]: set-syntax-end-c++-comment
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
文字CHARがC++スタイルのコメントの終了文字として規定されているかを返します。

  t     終了文字である。
  nil   終了文字でない。


■syntax-end-comment-p
[Type       ]: Function
[Arguments  ]: syntax-end-comment-p CHAR &optional SYNTAX-TABLE
[Package    ]: editor
[Seealso    ]: set-syntax-end-comment
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
文字CHARがコメント終了文字として規定されているかを返します。

  t     コメント終了文字である。
  nil   コメント終了文字でない。


■syntax-end-multi-comment-1-p
[Type       ]: Function
[Arguments  ]: syntax-end-multi-comment-1-p CHAR &optional SYNTAX-TABLE
[Package    ]: editor
[Seealso    ]: set-syntax-end-multi-comment , syntax-end-multi-comment-2-p
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
文字CHARがコメント終了の文字列の1文字目として規定されているかを返します。

  t     コメント終了文字列の1文字目である。
  nil   コメント終了文字列の1文字目でない。


■syntax-end-multi-comment-2-p
[Type       ]: Function
[Arguments  ]: syntax-end-multi-comment-2-p CHAR &optional SYNTAX-TABLE
[Package    ]: editor
[Seealso    ]: set-syntax-end-multi-comment , syntax-end-multi-comment-1-p
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
文字CHARがコメント終了の文字列の2文字目として規定されているかを返します。

  t     コメント終了文字列の2文字目である。
  nil   コメント終了文字列の2文字目でない。


■syntax-escape-p
[Type       ]: Function
[Arguments  ]: syntax-escape-p CHAR &optional SYNTAX-TABLE
[Package    ]: editor
[Seealso    ]: set-syntax-escape
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
文字CHARがエスケープ文字として規定されているかを返します。

  t     エスケープ文字である。
  nil   エスケープ文字でない。


■syntax-junk-p
[Type       ]: Function
[Arguments  ]: syntax-junk-p CHAR &optional SYNTAX-TABLE
[Package    ]: editor
[Seealso    ]: set-syntax-junk
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
文字CHARがゴミ文字として規定されているかを返します。

  t     ゴミ文字である。
  nil   ゴミ文字でない。


■syntax-math-p
[Type       ]: Function
[Arguments  ]: syntax-math-p CHAR &optional SYNTAX-TABLE
[Package    ]: editor
[Seealso    ]: set-syntax-math
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
文字CHARが対になった区切り文字として規定されているかを返します。

  t     対になった区切り文字である。
  nil   対になった区切り文字でない。


■syntax-open-p
[Type       ]: Function
[Arguments  ]: syntax-open-p CHAR &optional SYNTAX-TABLE
[Package    ]: editor
[Seealso    ]: set-syntax-match
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
文字CHARが括弧などの開始文字として規定されているかを返します。

  t     開始文字である。
  nil   開始文字でない。


■syntax-open-tag-p
[Type       ]: Function
[Arguments  ]: syntax-open-tag-p CHAR &optional SYNTAX-TABLE
[Package    ]: editor
[Seealso    ]: set-syntax-open-tag
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
文字CHARがタグの開始文字として規定されているかを返します。

  t     タグの開始文字である。
  nil   タグの開始文字でない。


■syntax-punctuation-p
[Type       ]: Function
[Arguments  ]: syntax-punctuation-p CHAR &optional SYNTAX-TABLE
[Package    ]: editor
[Seealso    ]: set-syntax-punctuation
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
文字CHARが句読点文字として規定されているかを返します。

  t     句読点文字である。
  nil   句読点文字である。


■syntax-quote-p
[Type       ]: Function
[Arguments  ]: syntax-quote-p CHAR &optional SYNTAX-TABLE
[Package    ]: editor
[Seealso    ]: set-syntax-quote
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
文字CHARがSYNTAX-TABLEでquote(?)として規定されているか否か返します。
  t    CHARはquoteである。
  nil  CHARはquoteでない。


■syntax-start-column-comment-p
[Type       ]: Function
[Arguments  ]: syntax-start-column-comment-p CHAR &optional SYNTAX-TABLE
[Package    ]: editor
[Seealso    ]: set-syntax-start-column-comment
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
set-syntax-start-column-comment で指定した文字か否かを判定します。


■syntax-start-comment-p
[Type       ]: Function
[Arguments  ]: syntax-start-comment-p CHAR &optional SYNTAX-TABLE
[Package    ]: editor
[Seealso    ]: set-syntax-start-comment
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
文字CHARがコメント開始文字として規定されているかを返します。

  t     コメント開始文字である。
  nil   コメント開始文字でない。


■syntax-start-multi-comment-1-p
[Type       ]: Function
[Arguments  ]: syntax-start-multi-comment-1-p CHAR &optional SYNTAX-TABLE
[Package    ]: editor
[Seealso    ]: set-syntax-start-multi-comment , syntax-start-multi-comment-2-p
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
文字がコメント開始の文字列の1文字目として規定されているかを返します。

  CHAR         : コメント開始の1文字目を指定します。
  SYNTAX-TABLE : シンタックステーブルを指定します。指定しないと、カレン
                 トバッファにしようされているシンタックステーブルが使用
                 されます。

  t     コメント開始文字列の1文字目である。
  nil   コメント開始文字列の1文字目でない。


■syntax-start-multi-comment-2-p
[Type       ]: Function
[Arguments  ]: syntax-start-multi-comment-2-p CHAR &optional SYNTAX-TABLE
[Package    ]: editor
[Seealso    ]: set-syntax-start-multi-comment , syntax-start-multi-comment-1-p
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
文字CHARがコメント開始の文字列の2文字目として規定されているかを返します。

  t     コメント開始文字列の2文字目である。
  nil   コメント開始文字列の2文字目でない。


■syntax-string-p
[Type       ]: Function
[Arguments  ]: syntax-string-p CHAR &optional SYNTAX-TABLE
[Package    ]: editor
[Seealso    ]: set-syntax-string
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
文字CHARがSYNTAX-TABLEで文字列の区切りとして規定されているか否かを返します。
  t    CHARは文字列の区切り文字である。
  nil  CHARは文字列の区切り文字でない。


■syntax-symbol-p
[Type       ]: Function
[Arguments  ]: syntax-symbol-p CHAR &optional SYNTAX-TABLE
[Package    ]: editor
[Seealso    ]: set-syntax-symbol
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
文字がシンボル名を構成する文字として規定されているかを返します。
ただし単語構成文字は除きます。

  CHAR : 文字を指定します。  

  t     シンボル名を構成する文字である。
  nil   シンボル名を構成する文字でない。


■syntax-symbol-prefix-p
[Type       ]: Function
[Arguments  ]: syntax-symbol-prefix-p CHAR &optional SYNTAX-TABLE
[Package    ]: editor
[Seealso    ]: set-syntax-symbol-prefix
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
文字CHARがシンボルの前置子として規定されているかを返します。

  CHAR : 文字を指定します。  

  t     シンボルの前置子である。
  nil   シンボルの前置子でない。


■syntax-table
[Type       ]: Function
[Arguments  ]: syntax-table &optional BUFFER
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
現在のシンタックステーブルを取り出します。

使用例：
  ;;; evalして挿入
  (defun xmldoc-eval-and-insert ()
    (interactive "p")
    (let ((syntab (syntax-table)))  ;;現在のxmldocモードのsyntax-tableを取り出し
      (let (from to col str start end)
        (cond ((selection-start-end (start end)
                 (setq from start to end)))
              (t
               ;;一時的にlispに切り替えて
               (use-syntax-table ed::*lisp-mode-syntax-table*)
               (unwind-protect
                   (setq from (progn
                                (backward-sexp)
                                (point))
                         to (progn
                              (forward-sexp)
                              (point)))
                 ;; また元に戻す
                 (use-syntax-table syntab))))


■syntax-table-p
[Type       ]: Function
[Arguments  ]: syntax-table-p OBJECT
[Package    ]: editor
[Seealso    ]: make-syntax-table
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
指定されてオブジェクトOBJECTがシンタックステーブルか否かを返します。
  t    シンタックステーブルである。
  nil  シンタックステーブルでない。


■syntax-whitespace-p
[Type       ]: Function
[Arguments  ]: syntax-whitespace-p CHAR &optional SYNTAX-TABLE
[Package    ]: editor
[Seealso    ]: set-syntax-whitespace
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
文字CHARがSYNTAX-TABLEでwhitespaceとして規定されてるか否かを返します。
  t    CHARはwhitespaceでない。
  nil  CHARはwhitespaceである。


■syntax-word-p
[Type       ]: Function
[Arguments  ]: syntax-word-p CHAR &optional SYNTAX-TABLE
[Package    ]: editor
[Seealso    ]: set-syntax-word
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
文字が単語を構成する文字として規定されているかを返します。

  CHAR : 判定する文字を指定します。

  t     単語を構成する文字である。
  nil   単語を構成する文字でない。


■t
[Type       ]: Variable
[Package    ]: lisp
[Seealso    ]: nil
[Section    ]: 変数と定数
[Description]: 
真を表す定数です。


■tab-bar-add-item
[Type       ]: Function
[Arguments  ]: tab-bar-add-item BAR ITEM STRING &optional TOOLTIP MENU &key :first :last :before :after
[Package    ]: editor
[Seealso    ]: tab-bar-delete-item , create-tab-bar
[File       ]: builtin.l
[Section    ]: メニュー
[Description]: 
create-tab-barで作成したタブバーBARにタブを追加します。タブを識別するた
めのITEMとタブの文字列STRINGを指定します。個別のツールチップTOOLTIPと、
メニューMENUを指定可能です。


■tab-bar-current-item
[Type       ]: Function
[Arguments  ]: tab-bar-current-item BAR
[Package    ]: editor
[Seealso    ]: tab-bar-delete-item , tab-bar-add-item
[File       ]: builtin.l
[Section    ]: メニュー
[Description]: 
選択中のタブの情報が返されます。タブがひとつも無い場合には、nilが返され
ます。必ず、タブを識別するためのシンボル、タブの文字列、ツールチップのリ
ストで返されます。ツールチップが設定されていない場合には、nilが返されま
す。

使用例：
  (progn
    (defun a-func (a) (msgbox "~A ~A" a (type-of a)))
    (define-command-bar 'a-bar "a bar")
    (create-tab-bar 'a-bar 'a-func)
    (show-command-bar 'a-bar)
    (tab-bar-add-item 'a-bar '1st "- 1st -" "1st item")
    (tab-bar-add-item 'a-bar '2nd "- 2nd -" "2nd item"))
  => t
  (tab-bar-current-item 'a-bar)
  => (1st "- 1st -" "1st item")
  (progn
    (tab-bar-delete-item 'a-bar '1st)
    (tab-bar-delete-item 'a-bar '2nd)
    (delete-tool-bar 'a-bar)
    (delete-command-bar 'a-bar))
  => t


■tab-bar-delete-item
[Type       ]: Function
[Arguments  ]: tab-bar-delete-item BAR ITEM
[Package    ]: editor
[Seealso    ]: tab-bar-add-item , create-tab-bar
[File       ]: builtin.l
[Section    ]: メニュー
[Description]: 
create-tab-barで作成したタブバーBARからタブITEMを削除します。削除するタ
ブが選択状態であれば、次のタブが選択されて同時にCALLBACKが実行されます。


■tab-bar-find-item
[Type       ]: Function
[Arguments  ]: tab-bar-find-item BAR ITEM
[Package    ]: editor
[Seealso    ]: create-tab-bar
[File       ]: builtin.l
[Section    ]: メニュー
[Description]: 
指定されたタブバーBARからタブITEMが存在するか否かを返します。
  t    存在する。
  nil  存在しない。

使用例：
  (tab-bar-find-item 'a-bar '1st)
  => t
  (tab-bar-find-item 'a-bar '3rd)
  => nil


■tab-bar-list-items
[Type       ]: Function
[Arguments  ]: tab-bar-list-items BAR
[Package    ]: editor
[Seealso    ]: tab-bar-find-item , create-tab-bar
[File       ]: builtin.l
[Section    ]: メニュー
[Description]: 
指定されたタブバーBARのタブのシンボルのリストを返します。

使用例：
  (tab-bar-list-items 'a-bar)
  => (1st 2nd)


■tab-bar-modify-item
[Type       ]: Function
[Arguments  ]: tab-bar-modify-item BAR ITEM &optional STRING TOOLTIP MENU
[Package    ]: editor
[Seealso    ]: tab-bar-add-item
[File       ]: builtin.l
[Section    ]: メニュー
[Description]: 
指定されたタブバーBARのタブITEMの設定を変更します。

使用例：
  (tab-bar-modify-item 'a-bar '1st "- first -")
  => t


■tab-bar-select-item
[Type       ]: Function
[Arguments  ]: tab-bar-select-item BAR ITEM
[Package    ]: editor
[Seealso    ]: tab-bar-current-item
[File       ]: builtin.l
[Section    ]: メニュー
[Description]: 
指定されたタブバーBARのタブITEMを選択状態にします。同時にタブバーに設定
されたCALLBACKが実行されます。


■tab-columns
[Type       ]: Function
[Arguments  ]: tab-columns &optional BUFFER
[Package    ]: editor
[Seealso    ]: set-tab-columns
[File       ]: builtin.l
[Section    ]: テキスト
[Description]: 
タブ幅を返します。タブ幅はset-tab-columnsで設定できます。

  BUFFER : タブ幅を返すバッファを指定します。
           指定がなければカレントバッファが対象となります。


■tabify
[Type       ]: Function
[Arguments  ]: tabify FROM TO
[Package    ]: editor
[Seealso    ]: untabify
[File       ]: cmds.l
[Section    ]: テキスト
[Description]: 
FROM と TO の間にある半角スペースを可能な限りタブ文字で置き換えます。


■tagbody
[Type       ]: Special Form
[Arguments  ]: tagbody {TAG|STATEMENT}*
[Package    ]: lisp
[Seealso    ]: go
[File       ]: builtin.l
[Section    ]: 制御構造
[Description]: 
labelジャンプです。
tagbody内は任意の数のtag(シンボルもしくは数字)とstatement(S式)からなり
実行時にはtagは無視されstatementが実行されます。(go tag)が評価されたときに
実行はtagの場所に移ります。tagbodyは終了時にnilを返します。


■tail-f
[Type       ]: Function
[Arguments  ]: tail-f FILENAME
[Package    ]: editor
[File       ]: tail-f.l
[Section    ]: ファイルシステム
[Description]: 
tail コマンドの -f オプションのように、更新され続けるようなファイルを終
端まで読み込み続けようとします。


■tailp
[Type       ]: Function
[Arguments  ]: tailp SUBLIST LIST
[Package    ]: lisp
[File       ]: list.l
[Section    ]: リスト
[Description]: 
SUBLISTがLISTを構成しているconsであるかを返す。

具体的にはLISTを順にcdrしていった結果とSUBLISTが
eqならtそうでないならnilを返す。


■tan
[Type       ]: Function
[Arguments  ]: tan RADIANS
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
正接関数の値を返します。


■tanh
[Type       ]: Function
[Arguments  ]: tanh Z
[Package    ]: lisp
[File       ]: number.l
[Section    ]: 数値
[Description]: 
双曲線正接関数を計算します。


■tenth
[Type       ]: Function
[Arguments  ]: tenth X
[Package    ]: lisp
[Seealso    ]: nth
[File       ]: list.l
[Section    ]: リスト
[Description]: 
list の 10 番目の要素を返します。

  (tenth X) = (nth 9 X)

使用例：
  (tenth '(1 2 3 4 5 6 7 8 9 0))
  => 0


■terpri
[Type       ]: Function
[Arguments  ]: terpri &optional OUTPUT-STREAM
[Package    ]: lisp
[Seealso    ]: fresh-line
[File       ]: builtin.l
[Section    ]: 入出力
[Description]: 
OUTPUT-STREAM に改行 (#\LFD) を出力して nil を返します。


■third
[Type       ]: Function
[Arguments  ]: third X
[Package    ]: lisp
[Seealso    ]: caddr
[File       ]: list.l
[Section    ]: リスト
[Description]: 
caddr の別名です。全く同じ動きをします。


■throw
[Type       ]: Special Form
[Arguments  ]: throw TAG RESULT
[Package    ]: lisp
[Seealso    ]: catch
[File       ]: builtin.l
[Section    ]: 制御構造
[Description]: 
catchで指定されたラベルまで、非局所脱出します。
名前はC++と同じです。

  C++  : try    throw
  Lisp : catch  throw

使用例：
  ;;; test2で例外を出してtest1でキャッチする。
  (defun test1 (x)
    (catch 'label1
      (test2 x)))
  => test1
  (defun test2 (x)
    (if (zerop x)
        (throw 'label1 'division-by-zero)
        (/ 1 x)))
  => test2
  (test1 0)
  => division-by-zero

参考：
  エラー処理関連


■title-bar-format
[Type       ]: Variable
[Package    ]: editor
[Seealso    ]: mode-line-format
[Section    ]: 変数と定数
[Description]: 
タイトルバーのフォーマットを設定します。
モードラインのフォーマットと同様です。

使用例：
  (setq title-bar-format "--%*- %b (%M) [%k:%l] %P %f")

パラメタ：
  %*    変更あり          : **
        書込禁止          : %-
        変更あり・書込禁止: %*
        それ以外          : --
  %#*   変更あり: *
        変更なし: (空白) 
  %r    書込可  : (空白)
        書込禁止: % 
  %#r   書込可        : (空白)
        書込禁止      : %
        不完全バッファ: # 
  %p    プログラム名 
  %v    バージョン 
  %h    ホスト名 
  %#h   @ホスト名 
  %b    バッファ名 
  %f    File: ファイル名 
  %#f   ファイル名 
  %F    File: ファイル名。ファイル名がなければバッファ名 
  %#F   ファイル名。ファイル名がなければバッファ名 
  %M    モード(マイナーモード含む) 
  %m    モード 
  %k    エンコーディング 
  %l    改行コード 
  %i    IMEの状態。mode-line-formatのみ。 
  %P    カーソル位置。mode-line-formatのみ。


■toggle-ime
[Type       ]: Function
[Arguments  ]: toggle-ime &optional ON-OR-OFF
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: キーマップ
[Description]: 
IMEのON/OFFを制御します。
  non-nil  IMEをONにする
  nil      IMEをOFFにする
  省略時   IMEをトグルする


■toggle-over
[Type       ]: Function
[Arguments  ]: toggle-over &optional (ARG () SV)
[Package    ]: editor
[File       ]: cmds.l
[Section    ]: モード
[Description]: 
上書き用マイナーモードを制御します。
  nil以外  上書きモードにする
  nil      挿入モードにする
  省略時   モードをトグルする


■toggle-read-only
[Type       ]: Function
[Arguments  ]: toggle-read-only &optional (ARG () SV)
[Package    ]: editor
[Seealso    ]: buffer-read-only , nil
[File       ]: buffer.l
[Section    ]: バッファ
[Description]: 
バッファの書き込み禁止をトグルします。


■toggle-trace-on-error
[Type       ]: Function
[Arguments  ]: toggle-trace-on-error &optional (ARG () SVAR)
[Package    ]: editor
[Seealso    ]: ed::toggle-mode
[File       ]: misc.l
[Section    ]: エラー
[Description]: 
エラーをトレースするかどうかをトグルします。
On にする時にトレース用のバッファ *Trace Output* が無ければ新しく作ります。

前置引数をつけた場合、toggle-mode と同じような挙動をします。


■tool-bar-exist-p
[Type       ]: Function
[Arguments  ]: tool-bar-exist-p NAME
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: メニュー
[Description]: 
指定されたツールバーNAMEが存在するか否かを返します。
  t    ツールバーが存在する。
  nil  ツールバー存在しない。


■tool-bar-info
[Type       ]: Function
[Arguments  ]: tool-bar-info NAME
[Package    ]: editor
[Seealso    ]: list-tool-bars
[File       ]: builtin.l
[Section    ]: メニュー
[Description]: 
指定したツールバーNAMEの情報を多値で返します。

形式：
  表示位置  :top        上側に表示
            :left       左側に表示
            :right      右側に表示
            :bottom     下側に表示
            nil         非表示
  横位置    横の位置を返す。
  縦位置    縦の位置を返す。
  横幅      タブバーの場合に左右に表示した場合の横幅を返す。
            ツールバーの場合はnilを返す。


■track-popup-menu
[Type       ]: Function
[Arguments  ]: track-popup-menu MENU &optional ANY
[Package    ]: editor
[Seealso    ]: create-popup-menu , define-popup-menu
[File       ]: builtin.l
[Section    ]: メニュー
[Description]: 
フローティングポップアップメニューを表示します。選択されたコマン
ドを実行します。マウスボタンが押されていない場合はnilを返します。

  MENU : create-popup-menuもしくはdefine-popup-menuで作成された
         メニューを指定します。
  ANY  : どのようにポップアップするかを指定できます。
        :button1        マウスの位置にポップアップ
        :button2        マウスの位置にポップアップ
        上記以外        カーソルの位置にポップアップ


■transpose-chars
[Type       ]: Function
[Arguments  ]: transpose-chars &optional (ARG 1 F)
[Package    ]: editor
[File       ]: cmds.l
[Section    ]: テキスト
[Description]: 
ポイントのひとつ前の文字を、ポイントの位置の文字と交換します。
ポイント自体はひとつ前に進みます。


■transpose-lines
[Type       ]: Function
[Arguments  ]: transpose-lines &optional (ARG 1)
[Package    ]: editor
[File       ]: cmds.l
[Section    ]: テキスト
[Description]: 
カーソルのある行の一つ前の行と、そこから ARG 行先の行とを入れ換えます。[C-x C-t]
ただし ARG が 0 の場合にはマークの前の行と入れ換えます。


■transpose-paragraphs
[Type       ]: Function
[Arguments  ]: transpose-paragraphs &optional (ARG 1)
[Package    ]: editor
[Seealso    ]: transpose-region
[File       ]: paragrph.l
[Section    ]: リージョン
[Description]: 
段落を次の段落と交換します。


■transpose-region
[Type       ]: Function
[Arguments  ]: transpose-region MOVER ARG
[Package    ]: editor
[File       ]: cmds.l
[Section    ]: テキスト
[Description]: 
リージョンを入れ換えます。入れ換えるリージョンは MOVER を funcall して
決定されます。

使用例： 
  (transpose-region 'forward-paragraph arg)


■transpose-words
[Type       ]: Function
[Arguments  ]: transpose-words &optional (ARG 1)
[Package    ]: editor
[File       ]: cmds.l
[Section    ]: 文字列
[Description]: 
カーソル位置の単語を後方の単語と入れ換えます。


■trap-errors
[Type       ]: Macro
[Arguments  ]: trap-errors &body BODY
[Package    ]: editor
[Seealso    ]: handler-case , ignore-errors
[File       ]: misc.l
[Section    ]: エラー
[Description]: 
BODY 内でエラーが起こった場合もしくは中断（quit）された場合、
キャッチして trap-errors の外に影響がでないようにします。
handler-case の簡易版といえます。
ignore-errors と違い、エラーが発生したら表示されます。

使用例:
  ;; エラーが起きたらとりあえずキャッチして、その後の処理は続ける。
  (progn
    (trap-errors
      (/ 1 0))
    (msgbox "done."))


■truename
[Type       ]: Function
[Arguments  ]: truename PATHNAME
[Package    ]: lisp
[Seealso    ]: get-short-path-name
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
相対パスを絶対パスに変えます。

  PATHNAME : 変換するパスを指定します。

使用例：
  ;;; 相対パス及び絶対パスを指定して変換する。
  (truename ".")
  => "C:/applications/xyzzy"
  (truename "C:/applications/xyzzy/")
  => "C:/applications/xyzzy"


■truncate
[Type       ]: Function
[Arguments  ]: truncate NUMBER &optional DIVISOR
[Package    ]: lisp
[Seealso    ]: floor , ceiling , round
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
NUMBERを0の方向に丸めます。

使用例：
  (truncate 2.8)
  => 2
  (truncate -2.8)
  => -2
  (multiple-value-list (truncate 2.8))
  => (2 0.8)


■two-way-stream-input-stream
[Type       ]: Function
[Arguments  ]: two-way-stream-input-stream TWO-WAY-STREAM
[Package    ]: lisp
[Seealso    ]: make-two-way-stream
[File       ]: builtin.l
[Section    ]: 入出力
[Description]: 
make-two-way-stream で作られた TWO-WAY-STREAM の入力元のストリームを返します。


■two-way-stream-output-stream
[Type       ]: Function
[Arguments  ]: two-way-stream-output-stream TWO-WAY-STREAM
[Package    ]: lisp
[Seealso    ]: make-two-way-stream
[File       ]: builtin.l
[Section    ]: 入出力
[Description]: 
make-two-way-stream で作られた TWO-WAY-STREAM の出力先のストリームを返します。


■type-of
[Type       ]: Function
[Arguments  ]: type-of OBJECT
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
与えられたオブジェクトの型を返します。
(typep OBJECT (type-of OBJECT))は必ずtになります。

使用例：
  ;;; それぞれの型を調べてみる。
  (type-of 1)
  => integer
  (type-of 2.2)
  => single-float
  (type-of #'car)
  => compiled-function


■undefine-key
[Type       ]: Function
[Arguments  ]: undefine-key KEYMAP KEY
[Package    ]: editor
[Seealso    ]: define-key
[File       ]: keymap.l
[Section    ]: キーマップ
[Description]: 
キーマップのキーの割り当てを解除します。

  KEYMAP : キーマップ
  KEY    : 削除するキー

使用例：
  ;;; C-lをfiler-reloadに割り当てて、解除してみる
  (define-key filer-keymap #\C-l 'filer-reload)
  => t
  (undefine-key filer-keymap #\C-l)
  => t


■undefined
[Type       ]: Function
[Arguments  ]: undefined
[Package    ]: editor
[Seealso    ]: ding
[File       ]: cmds.l
[Section    ]: その他
[Description]: 
ベルを鳴らします。 ding の interactive 版です。

キーにコマンドが割り当てられてないことを表すのに使われることがあるようです。


■undo
[Type       ]: Function
[Arguments  ]: undo
[Package    ]: editor
[Seealso    ]: buffer-can-undo-p , undo-boundary , clear-undo-boundary , kept-undo-information , redo
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
直前の操作を取り消します。
UNDO情報の直近の境界まで戻ります。


■undo-boundary
[Type       ]: Function
[Arguments  ]: undo-boundary
[Package    ]: editor
[Seealso    ]: clear-undo-boundary , undo
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
UNDO情報に境界を設定します。
以後undoを実行すると、この境界まで戻ります。


■unexport
[Type       ]: Function
[Arguments  ]: unexport SYMBOLS &optional PACKAGE
[Package    ]: lisp
[Seealso    ]: export , パッケージ
[File       ]: builtin.l
[Section    ]: パッケージ
[Description]: 
シンボルのリストを指定して、その全てのシンボルをパッケージの外部から参照
できないようにします。

  ;; find-file は editor パッケージの外部シンボル
  (find-symbol "find-file" "editor")
  =>find-file
    :external

  ;; よって editor パッケージを use している user パッケージから参照できる
  (find-symbol "find-file" "user")
  =>find-file
    :inherited

  ;; 外部から参照できなくする
  (unepxport 'find-file "editor")
  =>t

  ;; 内部シンボルになった
  (find-symbol "find-file" "editor")
  =>editor::find-file
    :internal

  ;; user パッケージから参照できなくなった
  (find-symbol "find-file" "user")
  =>nil
    nil

  ;; 元に戻す
  (export 'ed::find-file "editor")
  =>t


■unicode-char
[Type       ]: Function
[Arguments  ]: unicode-char CODE
[Package    ]: editor
[Seealso    ]: char-unicode
[File       ]: builtin.l
[Section    ]: 文字
[Description]: 
UNICODEのコード値に対応した文字を返します。

使用例：
  ;;; UNICODEから文字を出してみる。
  (unicode-char 28450)
  => #\漢


■unintern
[Type       ]: Function
[Arguments  ]: unintern SYMBOL &optional PACKAGE
[Package    ]: lisp
[Seealso    ]: intern
[File       ]: builtin.l
[Section    ]: パッケージ
[Description]: 
パッケージにシンボルがあれば削除してtを、なければnilを返します。


■uninterned
[Type       ]: Misc
[Section    ]: パッケージ
[Description]: 
uninterned とは intern されていない状態を表します。
すなわちどのパッケージにも属していない状態です。

使用例：
  ;;; make-symbolでパッケージに属さないシンボルを作ってみる。
  (setq a (make-symbol "foo"))  => #:foo
  (symbol-package a)            => nil


■union
[Type       ]: Function
[Arguments  ]: union LIST1 LIST2 &rest REST &key :test :test-not :key
[Package    ]: lisp
[Seealso    ]: merge , nunion
[File       ]: list.l
[Section    ]: リスト
[Description]: 
LIST1 と LIST2 を併せたリストを作って返します。
nunion と違い元のリストは変更されません。

使用例:
  (union '(1 3 5 7 9) '(2 3 5 7 11))
  => (1 9 2 3 5 7 11)


■universal-argument
[Type       ]: Function
[Arguments  ]: universal-argument RAW &optional ARG
[Package    ]: editor
[File       ]: cmds.l
[Section    ]: 関数
[Description]: 
後に続くコマンドに前置引数として 'universal-argument を渡します。[C-u]

'universal-agument を数値として処理する場合は 4 と解釈されます。


■unless
[Type       ]: Macro
[Arguments  ]: unless TEST &body BODY
[Package    ]: lisp
[Seealso    ]: when
[File       ]: evalmacs.l
[Section    ]: 制御構造
[Description]: 
条件が成立しない場合に実行します。whenの逆です。

  (unless 条件式  本体 ....)


■unread-char
[Type       ]: Function
[Arguments  ]: unread-char CHARACTER &optional INPUT-STREAM
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 入出力
[Description]: 
入力ストリームに一文字戻します。

  CHARACTER    : 入力ストリームに戻す文字
  INPUT-STREAM : 入力ストリーム


■unregister-history-variable
[Type       ]: Function
[Arguments  ]: unregister-history-variable VAR
[Package    ]: editor
[Seealso    ]: define-history-variable , register-history-variable
[File       ]: history.l
[Section    ]: 変数と定数
[Description]: 
変数をヒストリ変数の登録から削除します。


■unset-marker
[Type       ]: Function
[Arguments  ]: unset-marker MARKER
[Package    ]: editor
[Seealso    ]: set-marker , delete-marker
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
マーカーのポジションを解除します。
オブジェクトはマーカーとして残ります。

使用例：
  (unset-marker m)
  => t
  m
  => #<marker: *scratch*: ->


■unset-minor-mode-map
[Type       ]: Function
[Arguments  ]: unset-minor-mode-map KEYMAP &optional BUFFER
[Package    ]: editor
[Seealso    ]: set-minor-mode-map
[File       ]: builtin.l
[Section    ]: モード
[Description]: 
マイナーモード用のキーマップを解除します。


■unshift-region
[Type       ]: Function
[Arguments  ]: unshift-region START END &optional (COLUMN (TAB-COLUMNS (SELECTED-BUFFER)))
[Package    ]: editor
[Seealso    ]: shift-region
[File       ]: region.l
[Section    ]: リージョン
[Description]: 
STARTとENDがある行の範囲をCOLUMN桁だけインデントを戻します。


■untabify
[Type       ]: Function
[Arguments  ]: untabify FROM TO
[Package    ]: editor
[Seealso    ]: tabify
[File       ]: cmds.l
[Section    ]: テキスト
[Description]: 
FROM と TO の間にあるタブ文字を適当な数の半角スペースで置き換えます。


■unuse-package
[Type       ]: Function
[Arguments  ]: unuse-package PACKAGES-TO-UNUSE &optional PACKAGE
[Package    ]: lisp
[Seealso    ]: use-package
[File       ]: builtin.l
[Section    ]: パッケージ
[Description]: 
パッケージが別のパッケージを使用しないようにします。

使用例：
  ;;; 使用例はcalc.lを参照
  (unuse-package "lisp" *calc-package*)
  => t


■unwind-protect
[Type       ]: Special Form
[Arguments  ]: unwind-protect PROTECTED-FORM {CLEANUP-FORM}*
[Package    ]: lisp
[Seealso    ]: handler-case , ignore-errors
[File       ]: builtin.l
[Section    ]: 制御構造
[Description]: 
PROTECTED-FORM 中に終了もしくは例外が発生しても（正常、異常を問わず）
CLEANUP-FORM を実行します。

使用例：
  ;;; ゼロ除算が起きても CLEANUP-FORM が実行される。
  (progn
    (msgbox "計算前")
    (unwind-protect (/ 1 0)
      (msgbox "計算後")))
  => 0で除算しました: /: (1 0)


■up-list
[Type       ]: Function
[Arguments  ]: up-list &optional ARG NO-ERRORS
[Package    ]: editor
[Seealso    ]: down-list
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
カーソルを ARG 個外側の括弧の後ろに移します。

  (setq lst '(a b c)) ; ここから
               ^
  (setq lst '(a b c)) ; ここへ
                    ^

ARG が負の場合には、前の方の括弧へ移動します。

  (setq lst '(a b c)) ; ここから
               ^
  (setq lst '(a b c)) ; ここへ
             ^

外側に括弧が見つからなかった場合、
NO-ERRORS が nil の場合にはエラーを、 t の場合には nil を返します。


■upcase-region
[Type       ]: Function
[Arguments  ]: upcase-region FROM TO
[Package    ]: editor
[Seealso    ]: capitalize-region , downcase-region
[File       ]: builtin.l
[Section    ]: リージョン
[Description]: 
リージョン内の単語を大文字にします。


■upcase-word
[Type       ]: Function
[Arguments  ]: upcase-word &optional (ARG 1)
[Package    ]: editor
[Seealso    ]: upcase-region , downcase-word
[File       ]: cmds.l
[Section    ]: 文字列
[Description]: 
カーソル位置から単語の末尾までを大文字に変換します。


■update-mode-line
[Type       ]: Function
[Arguments  ]: update-mode-line &optional BUFFER
[Package    ]: editor
[Seealso    ]: mode-line-format
[File       ]: builtin.l
[Section    ]: その他
[Description]: 
モード行を更新します。mode-line-formatの変更などを行った場合に、速やかに
モード行に反映したい場合に実行します。


■upper-case-p
[Type       ]: Function
[Arguments  ]: upper-case-p CHAR
[Package    ]: lisp
[Seealso    ]: lower-case-p , both-case-p
[File       ]: builtin.l
[Section    ]: 文字
[Description]: 
CHAR が大文字なら t 、そうでなければ nil を返します。

使用例：  
  (upper-case-p #\A)
  => t
  (upper-case-p #\a)
  => nil
  (upper-case-p #\RET)
  => nil


■use-keymap
[Type       ]: Function
[Arguments  ]: use-keymap KEYMAP &optional BUFFER
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: キーマップ
[Description]: 
バッファが使用するキーマップを設定します。

  KEYMAP : 使用するキーマップを指定します。
  BUFFER : バッファを指定します。省略時はカレントバッファに適用されます。

使用例：
  ;;; lispmode.lより
  (defun lisp-mode ()
    (interactive)
    (kill-all-local-variables)
    (setq buffer-mode 'lisp-mode)
    (setq mode-name "Lisp")
    (use-keymap *lisp-mode-map*)
    ...
    (run-hooks '*lisp-mode-hook*))


■use-local-menu
[Type       ]: Function
[Arguments  ]: use-local-menu MENU
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: メニュー
[Description]: 
カレントバッファにローカルなメニューを設定します。

  MENU : バッファにローカルなメニューを指定します。nilを設定するとローカ
         ルなメニューは解除され、デフォルトのメニューが使用されます。


■use-package
[Type       ]: Function
[Arguments  ]: use-package PACKAGES-TO-USE &optional PACKAGE
[Package    ]: lisp
[Seealso    ]: find-package , defpackage
[File       ]: builtin.l
[Section    ]: パッケージ
[Description]: 
指定されたパッケージ（省略された場合はカレントのパッケージ）が使
用する他のパッケージを設定します。


■use-syntax-table
[Type       ]: Function
[Arguments  ]: use-syntax-table SYNTAX-TABLE &optional BUFFER (INVALIDATE-P T)
[Package    ]: editor
[Seealso    ]: syntax-table-p , syntax-table
[File       ]: builtin.l
[Section    ]: シンタックス
[Description]: 
バッファで使用するシンタックステーブルを設定します。

使用例：
  ;;; lispmode.lの例
  (use-syntax-table *lisp-mode-syntax-table*)
  => t


■user-config-path
[Type       ]: Function
[Arguments  ]: user-config-path
[Package    ]: editor
[Seealso    ]: user-homedir-pathname , si:system-root
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
ユーザ設定を格納しているディレクトリを返します。
ダイアログでの規定値等が格納されるディレクトリです。

起動時オプション -config で指定したり，XYZZYCONFIGPATH
で指定可能です。両方指定された場合，起動時オプションが
優先されます。

使用例：
  (user-config-path)
  =>"H:/xyzzy/usr/Administrator/w2k/"


■user-homedir-pathname
[Type       ]: Function
[Arguments  ]: user-homedir-pathname
[Package    ]: lisp
[Seealso    ]: si:system-root , user-config-path
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
ユーザーのホームディレクトリを返します。

find-fileしたときに"~/"で参照可能なディレクトリです。
起動時に、このディレクトリに格納されている.xyzzyを読み込みます。
同一PCを複数人で使用していたり、ネットワーク共有されたフォルダに
xyzzyを格納した場合には、ユーザ毎にホームディレクトリの設定して
.xyzzyを切り替えることができます。

ユーザのホームディレクトリは、以下の順番で決定されます。

  1)iniファイル内の[init]homeDir
  2)環境変数 XYZZYHOME
  3)環境変数 HOME
  4)環境変数 HOMEDRIVE + HOMEPATH
  5)iniファイル内の[init]logDir
  6)xyzzy.exeのpath

使用例：
  (user-homedir-pathname)
  => "C:/HOME/"


■user-name
[Type       ]: Function
[Arguments  ]: user-name
[Package    ]: editor
[Seealso    ]: machine-name , si:getenv
[File       ]: builtin.l
[Section    ]: システム
[Description]: 
Windowsのログオンユーザー名を返します。


■uudecode-region
[Type       ]: Function
[Arguments  ]: uudecode-region FROM TO
[Package    ]: editor
[Seealso    ]: si:uudecode , uudecode-region-to-file
[File       ]: encdec.l
[Section    ]: リージョン
[Description]: 
リージョンをuudecodeします。


■uudecode-region-to-file
[Type       ]: Function
[Arguments  ]: uudecode-region-to-file FILENAME FROM TO
[Package    ]: editor
[Seealso    ]: si:uudecode , uudecode-region
[File       ]: encdec.l
[Section    ]: リージョン
[Description]: 
リージョンをuudecodeしてファイルに保存します。


■valid-path-p
[Type       ]: Function
[Arguments  ]: valid-path-p PATHNAME
[Package    ]: lisp
[Seealso    ]: check-valid-pathname , file-exist-p
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
パスが有効かどうかをチェックします。

  PATHNAME : 有効かどうかをチェックするパス

ここで「有効なパス」というのは、最終的なファイルやディレクトリが存在する
ことを指すのではなく、途中の経路が存在することを指します。ファイルを指し
示している場合には、そのファイル自体の有無は関係ありません。そのファイル
に至るディレクトリが全て存在していることが有効か否かに関わります。

使用例：
  (valid-path-p "foo/bar/zzz.txt")
  =>nil
  (valid-path-p "/autoexec.bat")
  =>t


■values
[Type       ]: Function
[Arguments  ]: values &rest ARGS
[Package    ]: lisp
[Seealso    ]: multiple-value-bind , multiple-value-list , multiple-value-setq
[File       ]: evalmacs.l
[Section    ]: 変数と定数
[Description]: 
多値で値を返します。

C言語では関数は1つの値しか返すことができませんが、Common Lispでは複数の
値を返す事ができます（リストとは違います）。これを多値（関数）と呼びます。
複数の値を返したい時は、 (values 値1 値2 ..)という構文を使います。

多値関数を呼び出す場合には、複数の戻り値を受け取れるように 
multiple-value-bind または multiple-value-listを使って受け取ります。

Description: evaluates each of its argument forms in turn, then returns 
as multiple values the first value returned by each of the forms. If the 
form that calls a values form does not expect the number of values returned, 
any excess values are discarded. values is used to return multiple values 
from a form that would otherwise return a single value. There are a number 
of Lisp forms, defined using values, that return multiple values. values 
can also be used to restrict the number of values such forms return. For 
example, the Lisp function decode-float returns three values. However, 
the form below returns only the first value returned by the decode-float 
form, since values has one argument and it returns a single value for 
each of its arguments. The advantage is increased efficiency provided 
that the second and third value are not required.

(values (decode-float floating-point-number))

The form (values) returns zero values since it has zero arguments. 
Therefore, each of the values the calling form expects to receive are nil 
by default.

互換性：
  Common Lispとxyzzyにはあり。
  muleにはなさそう。


■values-list
[Type       ]: Function
[Arguments  ]: values-list LIST
[Package    ]: lisp
[Seealso    ]: values
[File       ]: builtin.l
[Section    ]: 変数と定数
[Description]: 
指定されたリストを多値として返します。

  (values-list '(a b c)) == (values a b c)
  (values-list list) == (apply #'values list)


■vconcat
[Type       ]: Function
[Arguments  ]: vconcat &rest SEQ
[Package    ]: editor
[Seealso    ]: concatenate
[File       ]: misc.l
[Section    ]: 配列
[Description]: 
ベクタを連結します。

使用例:
  (vconcat #(1 3) #(2 5 7))
  => #(1 3 2 5 7)


■vector
[Type       ]: Function
[Arguments  ]: vector &rest LIST
[Package    ]: lisp
[Seealso    ]: svref , aref , setf , length , vector-pop , vector-push , vector-push-extend , vectorp , fill-pointer , make-vector , make-array
[File       ]: array.l
[Section    ]: 配列
[Description]: 
要素 LIST からなるベクトルをつくります。

  (setf v (vector 1 2 "oop"))
  =>#(1 2 "oop")

ベクトルの各要素にアクセスするためには、svref(あるいはaref)が使われます。


■vector-pop
[Type       ]: Function
[Arguments  ]: vector-pop VECTOR
[Package    ]: lisp
[Seealso    ]: fill-pointer , vector-push
[File       ]: builtin.l
[Section    ]: 配列
[Description]: 
ベクタ（一次元配列） VECTOR のフィルポインタの位置の要素を取り除き、
その要素を返します。

VECTOR はフィルポインタを持っているベクタである必要があります。

使用例:
  ;; フィルポインタなし
  (setf x (make-array 5 :initial-contents '(a b c d e)))
  => #(a b c d e)
  (vector-pop x)
  => エラー

  ;; フィルポインタあり
  (setf x (make-array 5 :initial-contents '(a b c d e) :fill-pointer t))
  => #(a b c d e)
  (vector-pop x)
  => e
  x
  => #(a b c d)


■vector-push
[Type       ]: Function
[Arguments  ]: vector-push NEW-ELEMENT VECTOR
[Package    ]: lisp
[Seealso    ]: fill-pointer , vector-pop , vector-push-extend
[File       ]: builtin.l
[Section    ]: 配列
[Description]: 
ベクタ（一次元配列） VECTOR のフィルポインタの次の位置に
新しい要素 NEW-ELEMENT を追加します。

VECTOR はフィルポインタを持っているベクタである必要があります。
フィルポインタが VECTOR の最後に達している場合には何もせず nil を返します。

使用例:
  ;; フィルポインタがベクタの長さに一致
  (setf x (make-array 5 :initial-contents '(a b c d e) :fill-pointer t))
  => #(a b c d e)
  (fill-pointer x)
  => 5
  (vector-push 'xyz x)
  => nil
  x
  =>#(a b c d e)

  ;; フィルポインタがベクタの長さより小さい
  (setf x (make-array 5 :initial-contents '(a b c d e) :fill-pointer 3))
  => #(a b c)
  (fill-pointer x)
  => 3
  (vector-push 'xyz x)
  => 3
  x
  => #(a b c xyz)


■vector-push-extend
[Type       ]: Function
[Arguments  ]: vector-push-extend NEW-ELEMENT VECTOR &optional EXTENSION
[Package    ]: lisp
[Seealso    ]: vector
[File       ]: builtin.l
[Section    ]: 配列
[Description]: 
ベクタに新しい要素を追加します。長さが足りなければ拡張します。

  NEW-ELEMENT：新しい要素 
  VECTOR     ：追加するベクタ
  EXTENSION  ：拡張する場合にどの程度サイズを大きくするか

使用例：
  ;;; 文字を要素とする長さ10のベクタを作成し文字を詰める。
  (setq *stream* (make-vector 10 :element-type 'character
                                 :fill-pointer 0 :adjustable t))
  => ""
  (vector-push-extend #\a *stream*)  => 0
  *stream*                           => "a"
  (vector-push-extend #\b *stream*)  => 1
  *stream*                           => "ab"

  ;;; 文字を要素とする長さ10のベクタを作成し文字を詰める。
  (setq s (make-vector 10 :element-type 'character
                          :fill-pointer 0 :adjustable t))
  => ""
  (dotimes (i 20)
    (vector-push-extend (code-char (+ 64 i)) s)
    (vector-push-extend (code-char (+ 64 i)) s)
    (vector-push-extend (code-char (+ 64 i)) s))
  => "@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSS"


■vectorp
[Type       ]: Function
[Arguments  ]: vectorp OBJECT
[Package    ]: lisp
[Seealso    ]: simple-vector-p
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
OBJECTがvectorならt、それ以外ならnilを返します。


■verify-visited-file-modtime
[Type       ]: Function
[Arguments  ]: verify-visited-file-modtime &optional BUFFER
[Package    ]: editor
[Seealso    ]: verify-buffers-file-modtime , switch-to-buffer , find-file-verify , clear-visited-file-modtime , update-visited-file-modtime
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
バッファがファイルに関連付けられていない、もしくはバッファとそれに関連付
けられたファイルとの更新時間が一致していると t を返します。バッファとそ
れに関連付けられたファイルとの更新時間が一致していない時、つまり他のプロ
セスによってファイルが変更された時などに nil を返します。


[Type       ]: BufferLocal
[Package    ]: editor
[Seealso    ]: verify-buffers-file-modtime , switch-to-buffer
[File       ]: buffer.l
[Section    ]: バッファ
[Description]: 
activate 時のバッファの最終更新日チェックを制御します。
  :auto    更新されていれば自動的に読み直す
  non-nil  チェックする
  nil      チェックしない


■version-up-xyzzy
[Type       ]: Function
[Arguments  ]: version-up-xyzzy &rest ARGS
[Package    ]: editor
[Seealso    ]: dump-xyzzy
[File       ]: verup.l
[Section    ]: システム
[Description]: 
亀井さんが配布しているxyzzyのアーカイブファイルをxyzzyがインストールされている
ディレクトリに展開します。
別途、ダンプファイルの再作成をする必要があります。


■view-register
[Type       ]: Function
[Arguments  ]: view-register R
[Package    ]: editor
[File       ]: register.l
[Section    ]: その他
[Description]: 
レジスタ R の中身をバッファ *output* に表示します。


■virtual-bolp
[Type       ]: Function
[Arguments  ]: virtual-bolp
[Package    ]: editor
[Seealso    ]: virtual-eolp
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
仮想行の行頭にあるかを返します。
バッファが行を折り返して表示している場合に有効です。

  t     仮想行の行頭にある
  nil   仮想行の行頭にない


■virtual-eolp
[Type       ]: Function
[Arguments  ]: virtual-eolp
[Package    ]: editor
[Seealso    ]: virtual-bolp
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
仮想行の行末にあるかを返します。
バッファが行を折り返して表示している場合に有効です。

  t     仮想行の行末にある
  nil   仮想行の行末にない


■what-cursor-position
[Type       ]: Function
[Arguments  ]: what-cursor-position
[Package    ]: editor
[File       ]: cmds.l
[Section    ]: ポジション
[Description]: 
カーソル位置の情報をステータスバーに表示します。[C-x =]
カーソル位置の文字の内部コード値、UNICODE値、
カーソル位置のバッファにおける位置、
桁数などが表示されます。

使用例:
  "w"の位置で情報を見る
  Char: w (0x77 / U+0077 / 0x77[us-ascii])  point=46 of 518(8%)  column 7

  "カ"の位置で情報を見る
  Char: カ (0x834a / U+30ab / 0x252b[jisx0208])  point=152 of 395(38%)  column 0


■when
[Type       ]: Macro
[Arguments  ]: when TEST &body BODY
[Package    ]: lisp
[File       ]: evalmacs.l
[Section    ]: 制御構造
[Description]: 
条件がnilでなければフォームを連続して実行します。

  TEST : 条件部
  BODY : nilでない場合に実行するフォーム

whenはマクロです。以下の様に展開されます。

 (when exp1 exp2 exp3 ...)
 = (if exp1
      (progn exp2
             exp3
             ...))


■while
[Type       ]: Macro
[Arguments  ]: while TEST &body BODY
[Package    ]: lisp
[File       ]: evalmacs.l
[Section    ]: 制御構造
[Description]: 
条件節が成立する間、BODYを繰り返して実行します。
BODYの実行の途中でwhileを抜けるには、returnを使います。

  (while 条件 本体)

使用例：
  ;;; 確認しつつ処理を実行する場合
  (while (yes-or-no-p "次行に移動しますか？")
    (forward-line)
    (reverse-region (progn (goto-bol) (point))
                    (progn (goto-eol) (point)) t)
    (refresh-screen))
  => nil


■widen
[Type       ]: Function
[Arguments  ]: widen
[Package    ]: editor
[Seealso    ]: narrow-to-region
[File       ]: builtin.l
[Section    ]: ポジション
[Description]: 
narrow-to-regionで制限された領域を元に戻します。


■wild-pathname-p
[Type       ]: Function
[Arguments  ]: wild-pathname-p PATHNAME
[Package    ]: lisp
[Seealso    ]: pathname-match-p
[File       ]: builtin.l
[Section    ]: 変数と定数
[Description]: 
ワイルドカード指定されたパスかどうかを返します。

  t     ワイルドカード指定されたパスです。
  nil   ワイルドカード指定されていません。

使用例：
  ;;; ワイルドカードかどうかを調べてみる。
  (wild-pathname-p "site-lisp/*.l")
  => t


■window-buffer
[Type       ]: Function
[Arguments  ]: window-buffer WINDOW
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: バッファ
[Description]: 
ウィンドウが表示しているバッファを返します。
  
使用例：
  (window-buffer (selected-window))


■window-columns
[Type       ]: Function
[Arguments  ]: window-columns &optional WINDOW
[Package    ]: editor
[Seealso    ]: window-width , window-lines , window-height
[File       ]: builtin.l
[Section    ]: ウィンドウ
[Description]: 
ウィンドウの文字を表示可能な領域の幅をキャラクタ単位で返します。
window-width が対象とする幅から、必要に応じて「行番号」表示領域、「折り
返し」マーク表示領域を除いた幅を計算対象とします。
キャラクタ幅に満たない幅については切り捨てますが、返す最小値は 1 です。

補足：
  具体的には、window-width の返す値から、「行番号」表示時は、行番号表示
  桁数 (xyzzy 0.2.2.233 では 6) ＋境界線分 (1) が引かれます。
  さらに、「折り返し」表示かつ、テキストの折り返しが「ウィンドウ幅」の場
  合には、「折り返し」マーク分 (1) が引かれます。


■window-coordinate
[Type       ]: Function
[Arguments  ]: window-coordinate &optional WINDOW
[Package    ]: editor
[Seealso    ]: window-width , window-height
[File       ]: builtin.l
[Section    ]: ウィンドウ
[Description]: 
指定されたウィンドウの座標をリストで返します。
(左端のx座標 左端のy座標 右端のx座標 右端のy座標)

座標軸は左上が (0 0) で右下にいくほど値が大きくなり、
単位はピクセルです。

使用例:
  (window-coordinate)
  => (0 0 693 636)


■window-height
[Type       ]: Function
[Arguments  ]: window-height &optional WINDOW
[Package    ]: editor
[Seealso    ]: window-lines , window-width , window-columns
[File       ]: builtin.l
[Section    ]: ウィンドウ
[Description]: 
ウィンドウの高さを行単位で返します。
部分的でなく完全に表示可能な行の数を返しますが、返す最小値は 1 です。
xyzzy 0.2.2.232 では内部的には window-lines と完全に同一定義です。

使用例：
  ;;; 現在のウィンドウを縦に半分にする。
  (split-window (- (floor (window-height) 2) 2))
  => t

補足：
  xyzzy 0.2.2.232 では内部的には window-lines と完全に同一定義ですが、
  window-height と window-lines は同一オブジェクトではありません。
  (eq #'window-height #'window-lines) => nil


■window-lines
[Type       ]: Function
[Arguments  ]: window-lines &optional WINDOW
[Package    ]: editor
[Seealso    ]: window-height , window-width , window-columns
[File       ]: builtin.l
[Section    ]: ウィンドウ
[Description]: 
ウィンドウの表示可能行数を返します。
部分的でなく完全に表示可能な行の数を返しますが、返す最小値は 1 です。
xyzzy 0.2.2.232 では内部的には window-height と完全に同一定義です。

使用例：
  (window-lines)
  => 18

補足：
  xyzzy 0.2.2.232 では内部的には window-height と完全に同一定義ですが、
  window-lines と window-height は同一オブジェクトではありません。
  (eq #'window-lines #'window-height) => nil


■window-width
[Type       ]: Function
[Arguments  ]: window-width &optional WINDOW
[Package    ]: editor
[Seealso    ]: window-columns , window-height , window-lines
[File       ]: builtin.l
[Section    ]: ウィンドウ
[Description]: 
ウィンドウの幅をキャラクタ単位で返します。
文字を表示可能な領域の幅ではなく、「行番号」表示領域、「折り返しマーク」
表示領域を含んだ領域についての幅を返します。
キャラクタ幅に満たない幅については切り捨てますが、返す最小値は 1 です。


■windowp
[Type       ]: Function
[Arguments  ]: windowp OBJECT
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: データ型
[Description]: 
指定されたOBJECTがウィンドウかを返します。

  t     OBJECTがウィンドウ
  nil   OBJECTはウィンドウではない


■with-hash-table-iterator
[Type       ]: Macro
[Arguments  ]: with-hash-table-iterator (MNAME HASH-TABLE) &body BODY
[Package    ]: lisp
[Seealso    ]: maphash
[File       ]: hash.l
[Section    ]: ハッシュ
[Description]: 
ハッシュテーブルの要素を順番に返す関数を返してもらいます。

  MNAME      : 要素を順番に返す関数名を指定します。
               この関数は要素を列挙し終わるとnilを返します。
  HASH-TABLE : ハッシュテーブルを指定します。
  BODY       : フォームを記述します。

関数が順番に要素を返すので、loopを使ってnilが返るまで繰り返します。

使用例：
  (with-output-to-selected-buffer
    (with-hash-table-iterator (foo hsh)
      (loop
        (multiple-value-bind (f x y)
            (foo)
          (unless f (return))
          (format t "~S ~S~%" x y)))))


■with-input-from-buffer
[Type       ]: Macro
[Arguments  ]: with-input-from-buffer (BUFFER &optional POINT EOB) &rest BODY
[Package    ]: editor
[Seealso    ]: with-output-to-buffer
[File       ]: misc.l
[Section    ]: 入出力
[Description]: 
バッファを入力ストリームとして扱えるようになり、
*standard-input*から読み込まれるようになります。

使用例：
  ;;; *scratch*の内容を*Output*に吐き出す。
  (with-output-to-buffer ((switch-to-buffer "*Output*"))
    (with-input-from-buffer ((switch-to-buffer "*scratch*"))
      (while (setq line (read-line *standard-input* nil))
        (princ line)
        (princ "\n"))))


■with-input-from-selected-buffer
[Type       ]: Macro
[Arguments  ]: with-input-from-selected-buffer &rest BODY
[Package    ]: editor
[File       ]: misc.l
[Section    ]: 入出力
[Description]: 
現在のバッファを標準入力にして読み込みます。

使用例：
  ;;; 現在のバッファから読み込んで変数に入れる。
  (with-input-from-selected-buffer
    (setq name (read) count (read) exp (read)))


■with-input-from-string
[Type       ]: Macro
[Arguments  ]: with-input-from-string (VAR STRING &key :index :start :end) &body BODY
[Package    ]: lisp
[File       ]: stream.l
[Section    ]: 入出力
[Description]: 
文字列を標準入力にして読み込みます。


■with-interval-message
[Type       ]: Macro
[Arguments  ]: with-interval-message (INTERVAL) &body BODY
[Package    ]: editor
[Seealso    ]: message
[File       ]: misc.l
[Section    ]: 入出力
[Description]: 
BODY 内で message コマンドによる表示の更新間隔を制限します。

  INTERVAL : 表示の最低更新間隔（ミリ秒）。
             前回 message を実行したときから INTERVAL ミリ秒以上経過していない場合、
             新たなメッセージを表示しません。

使用例:
  ;; 更新間隔を 100 ミリ秒にしてみる。
  (with-interval-message (100)
    (dotimes (i 100000)
      (message "~D" i)))


■with-open-file
[Type       ]: Macro
[Arguments  ]: with-open-file (STREAM FILENAME &rest OPTIONS) &body BODY
[Package    ]: lisp
[Seealso    ]: open
[File       ]: stream.l
[Section    ]: 入出力
[Description]: 
--- 原文 ---
Description: evaluates the forms of the body as an implicit progn. stream 
is bound to a stream that is the result of applying open
 to filename and the options. If the stream cannot be opened, stream may 
be bound to nil. The file is automatically closed if the body is exited, 
even in error.

--- 意訳 ---
prognがあるかのようにBODYのフォームを順番に評価します。STREAMは、FILEと
OPTIONにopenを適用した結果のストリームに束縛されます。もしストリームの
openに失敗したら、STREAMはnilに束縛されます。FILEはBODYから抜けた場合に
自動的にクローズされます。たとえそれがエラーの場合であっても。

使用例：
  (with-open-file (fp (merge-pathnames "lisp/henmi/c++-kwd.txt" (si:system-root)))
    (let ((line nil))
      (while (setq line (read-line fp nil nil nil))
        (push line *kekka*))))


■with-open-stream
[Type       ]: Macro
[Arguments  ]: with-open-stream (VAR STREAM) &body BODY
[Package    ]: lisp
[File       ]: stream.l
[Section    ]: 入出力
[Description]: 
出力ストリームを開きます。

--- 原文 ---
evaluates the form stream to return a stream with dynamic extent. The 
value of the stream is bound to var, and then the body forms are 
evaluated as an implicit progn. The value of with-open-stream is that of 
the last form evaluated. On termination, whether normal or otherwise, 
the stream is closed by close.

--- 意訳 ---
STREAMのフォームを評価して動的エクステントのストリームを返します。返され
たストリームの値はVARに束縛されます。そして、BODYのフォームは暗黙のprogn
の中で評価されます。with-open-streamの値は、最後のBODYのフォームのものに
なります。正常終了か否かにかかわらず、終了時にストリームはクローズされます。

参考：
  connectの例を参照のこと


■with-output-to-buffer
[Type       ]: Macro
[Arguments  ]: with-output-to-buffer (BUFFER &optional POINT) &rest BODY
[Package    ]: editor
[Seealso    ]: with-output-to-selected-buffer , with-output-to-temp-buffer
[File       ]: misc.l
[Section    ]: 入出力
[Description]: 
標準出力を指定されたバッファにリダイレクトします。

  BUFFER : 出力するバッファ
  POINT  : 出力をするポイントを指定します。
           指定しない場合には、バッファの先頭から出力されます。
  BODY   : 実行するフォーム

使用例：
  ;;; *scratch*に書き出してみる。
  (with-output-to-buffer ((find-buffer "*scratch*"))
     (format t "foo~%")
     (format t "bar~%"))


■with-output-to-selected-buffer
[Type       ]: Function
[Arguments  ]: with-output-to-selected-buffer &rest BODY
[Package    ]: editor
[Seealso    ]: with-output-to-buffer
[File       ]: misc.l
[Section    ]: 入出力
[Description]: 
標準出力をカレントバッファにリダイレクトします。
ポイントがある位置から出力されます。
  
使用例：
  ;;; カレントバッファに書き出してみる。
  (with-output-to-selected-buffer
     (format t "foo~%")
     (format t "bar~%"))


■with-output-to-string
[Type       ]: Macro
[Arguments  ]: with-output-to-string (VAR &optional STRING) &body BODY
[Package    ]: lisp
[File       ]: stream.l
[Section    ]: 入出力
[Description]: 
文字列を出力するストリームを作成します。

使用例：
  ;;; ストリームを使って文字列を出力してみる。
  (setq var
        (with-output-to-string (out)
          (prin1 "test" out)))
  => "test"


■with-output-to-temp-buffer
[Type       ]: Macro
[Arguments  ]: with-output-to-temp-buffer (BUFNAME &optional (POPUP t)) &rest BODY
[Package    ]: editor
[Seealso    ]: with-output-to-buffer
[File       ]: misc.l
[Section    ]: 入出力
[Description]: 
指定されたバッファを作成し、標準出力をそのバッファにリダイレクトします。
同じ名前のバッファがあった場合には、そのバッファの内容は破棄されます。
単に処理結果だけを書き込むような場合に便利です。

  BUFNAME : バッファの名前を指定します。
  POPUP   : バッファを分割表示する際の行数／列数を指定します。
        t       ニ分割します。
        整数    指定行数／列数で分割します。
        nil     バッファを分割表示しません。
  VERT-P  : バッファの分割方法を指定します。
            POPUP が nil の場合は意味を持ちません。
        non-nil 左右にバッファを分割します。
        nil     上下にバッファを分割します。

使用例：
  ;;; *Help*を作ってそこに書き出してみる。
  (with-output-to-temp-buffer ("*Help*")
     (format t "foo~%")
     (format t "bar~%"))

互換性：
   muleにもCommon Lispにもありません。


■with-package-iterator
[Type       ]: Macro
[Arguments  ]: with-package-iterator (MNAME PACKAGE-LIST &rest SYMBOL-TYPE) &body BODY
[Package    ]: lisp
[Seealso    ]: do-all-symbols
[File       ]: package.l
[Section    ]: パッケージ
[Description]: 
指定されたパッケージのシンボルを列挙する関数を作ってもらいます。
作られた関数を呼び出すたびにシンボルが列挙されます。

  MNAME        : シンボルを返す関数名を指定します。
  PACKAGE-LIST : パッケージのリストを指定します。
  SYMBOL-TYPE  : どんなシンボルを返すかを指定するようです。

使用例：
  ;;; 全シンボルを列挙します。
  ;;; 呼ぶたびに次のシンボルを返すfooという関数を定義してもらう。
  (with-package-iterator (foo (list-all-packages) :internal :external)
    (loop
      (multiple-value-bind (f sym type package)
          (foo)             ; 呼ぶと次のシンボルが返ってくる。
        (unless f           ; なければ終わり。
          (return))
        (and (or (boundp sym)
                 (fboundp sym))
             (format t "~:[ ~;V~]~:[ ~;F~]~:[ ~;M~] ~A ~S ~S~%"
                     (boundp sym)
                     (fboundp sym)
                     (macro-function sym)
                     (package-name package)
                     sym
                     type)))))


■with-selected-window
[Type       ]: Macro
[Arguments  ]: with-selected-window &body BODY
[Package    ]: editor
[Seealso    ]: set-window , save-window-excursion
[File       ]: misc.l
[Section    ]: ウィンドウ
[Description]: 
BODY の前後でカレントウィンドウを保存します。
すなわち、BODY 実行中にウィンドウを移動しても、実行後に元のウィンドウに戻ります。


■with-set-buffer
[Type       ]: Macro
[Arguments  ]: with-set-buffer &body BODY
[Package    ]: editor
[Seealso    ]: set-buffer
[File       ]: misc.l
[Section    ]: バッファ
[Description]: 
BODY を実行する際に、ポイントがミニバッファ以外にあることを保証します。
ポイントがミニバッファにあった場合、BODY を実行した後ポイントはミニバッファに戻ります。

ミニバッファで set-buffer するとエラーが起きるので、それを回避するためにあるようです。

使用例:
  ;; lisp/misc.l より
  (defun setup-temp-buffer (buffer)
    (with-set-buffer
      (save-excursion
        (set-buffer buffer)
        (setq buffer-read-only nil)
        (setq need-not-save t)
        (setq kept-undo-information nil)
        (setq auto-save nil))))


■write
[Type       ]: Function
[Arguments  ]: write OBJECT &key :stream :escape :pretty :base :radix :circle :level :length :readably
[Package    ]: lisp
[Seealso    ]: read
[File       ]: builtin.l
[Section    ]: 入出力
[Description]: 
OBJECTを印字表現でストリームに出力します。:streamを省略すると
*standard-output*に出力します。
（詳細不明）


■write-char
[Type       ]: Function
[Arguments  ]: write-char CHARACTER &optional OUTPUT-STREAM
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 入出力
[Description]: 
OUTPUT-STREAM に CHARACTER を出力し、その CHARACTER を返します。


■write-region
[Type       ]: Function
[Arguments  ]: write-region FROM TO FILENAME &optional APPEND CHAR-ENCODING EOL-CODE
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: ファイルシステム
[Description]: 
リージョンをファイルに書き込みます。
APPEND が non nil なら追加書き込みをします。


■write-registry
[Type       ]: Function
[Arguments  ]: write-registry SECTION KEY VALUE
[Package    ]: editor
[Seealso    ]: read-registry
[File       ]: builtin.l
[Section    ]: システム
[Description]: 
レジストリに書き込みます。

  SECTION : セクションを指定します。
  KEY     : キーを指定します。
  VALUE   : 値を指定します。

使用例：
  ;;; HKEY_CURRENT_USER\Software\Free Software\Xyzzy の下にデータを書き込む
  (write-registry "software\\chombo\\altime" "aaa" 64)

  以下のように書き込まれます。
-----
REGEDIT4

[HKEY_CURRENT_USER\Software\Free Software\Xyzzy\software\chombo\altime]
"aaa"=dword:00000040
-----


■wrong-disk
[Type       ]: Misc
[Package    ]: lisp
[Seealso    ]: wrong-disk-pathname
[Section    ]: ファイルシステム
[Description]: 
注）どこにもみつからない？


■wrong-disk-pathname
[Type       ]: Function
[Arguments  ]: wrong-disk-pathname X
[Package    ]: lisp
[Section    ]: ファイルシステム
[Description]: 
注）どこにもみつからない？


■xyzzy-dumped-p
[Type       ]: Function
[Arguments  ]: xyzzy-dumped-p
[Package    ]: editor
[File       ]: builtin.l
[Section    ]: システム
[Description]: 
起動時にxyzzyがダンプ済みかどうかを返します。

  t     ダンプ済み
  nil   ダンプ済みではない

ダンプ作業をしても再起動するまでは戻り値はtになりません。


■xyzzyで提供されているストリームの種類
[Type       ]: Tips
[Section    ]: 入出力
[Description]: 
（途中）
以下はxyzzyで提供されているストリームの種類です。

  Commonと同じ
  ---------------------------------------------
  file-input-stream       open
  file-output-stream      open
  file-io-stream          open
  string-input-stream     make-string-input-stream
  string-output-stream    make-string-output-stream
  synonym-stream          make-synonym-stream
  broadcast-stream        make-broadcast-stream
  concatenated-stream     make-concatenated-stream
  echo-stream             make-echo-stream
  two-way-stream          make-two-way-stream
  ---------------------------------------------

synonym-stream以降は使ったことないんで(^^;、動くかどうか分からないんです
が多分動くでしょう(^^)。

  独自
  ---------------------------------------------
  buffer-stream           make-buffer-stream
  status-window-stream    なし
  keyboard-stream         なし
  wstreams-stream         なし
  ---------------------------------------------

独自ストリームの概要：
  buffer-stream
    バッファをストリームとみなして入出力どっちでもできます。  
  status-window-stream
    ステータスウィンドウをストリームとみなして出力ができます。
    グローバル変数*status-window*の値です。
  keyboard-stream
    キーボードをストリームとみなして入力ができます。
    グローバル変数*keyboard*の値です。
  wstreams-stream
    formatからコールバックが呼ばれたときのstreamの実体。


■y-or-n-p
[Type       ]: Function
[Arguments  ]: y-or-n-p FMT &rest ARGS
[Package    ]: lisp
[Seealso    ]: yes-or-no-p , no-or-yes-p , yes-no-or-cancel-p
[File       ]: misc.l
[Section    ]: ミニバッファ
[Description]: 
ミニバッファにメッセージを表示してユーザーが'y'か'n'を入力するのを待ちます。

  t     'y'を押下した
  nil   'n'を押下した

使用例：
  ;;; "Foo: (y or n) "と表示して選択させる。
  (y-or-n-p "Foo: ")
  => t          ; 'y'を押下


■yank
[Type       ]: Function
[Arguments  ]: yank &optional PREFIX (ARG 0)
[Package    ]: editor
[Seealso    ]: *kill-ring* , yank-pop , yank-rectangle
[File       ]: region.l
[Section    ]: リージョン
[Description]: 
*kill-ring*の先頭の要素を挿入します。


■yank-and-pop
[Type       ]: Function
[Arguments  ]: yank-and-pop &optional PREFIX (ARG 0)
[Package    ]: editor
[Seealso    ]: yank-pop
[File       ]: region.l
[Section    ]: リージョン
[Description]: 
*kill-ring*の先頭の要素をyankした後に、先頭の要素を*kill-ring*からpopします。
*kill-ring*は一要素分短くなります。


■yank-pop
[Type       ]: Function
[Arguments  ]: yank-pop &optional (ARG 1)
[Package    ]: editor
[Seealso    ]: yank
[File       ]: region.l
[Section    ]: リージョン
[Description]: 
次の要素をyankします。直前のコマンドがyankならば*kill-ring*のポインター
をずらして、次の要素でyankをし直します。


■yank-rectangle
[Type       ]: Function
[Arguments  ]: yank-rectangle
[Package    ]: editor
[Seealso    ]: kill-rectangle , yank-rectangle-selection , yank-rectangle-as-region
[File       ]: rectangl.l
[Section    ]: リージョン
[Description]: 
copy-rectangleやkill-rectangleによって選択された領域を矩形挿入します。
yank-rectangle-selectionのInsert相当の機能のようです。


■yank-rectangle-as-region
[Type       ]: Function
[Arguments  ]: yank-rectangle-as-region
[Package    ]: editor
[Seealso    ]: yank-rectangle
[File       ]: rectangl.l
[Section    ]: リージョン
[Description]: 
copy-rectangleで切り取った矩形領域を、
連続した一連の文字列として挿入します。

  ABCDEFG ;
  HIJKLMN ; JKL
  OPQRSTU ; QRS
  VWXYZ   ; XYZの領域をcopy-rectangle

  (yank-rectangle)
  =>JKL
    QRS
    XYZ

  (yank-rectangle-as-region)
  =>JKLQRSXYZ


■yank-rectangle-selection
[Type       ]: Function
[Arguments  ]: yank-rectangle-selection &optional ARG
[Package    ]: editor
[Seealso    ]: yank-rectangle , kill-rectangle-selection
[File       ]: select.l
[Section    ]: リージョン
[Description]: 
マウスで矩形選択されたセレクションの領域をyankします。
実行後にどのようにyankするかを質問されます。
  F6    Cancel                  yank中止
  F7    Append                  行末に追加
  F8    Overwrite               上書き
  F9    Insert                  挿入
  F10   Insert as region        文字列にして挿入


■yank-selection
[Type       ]: Function
[Arguments  ]: yank-selection &optional (ARG 0)
[Package    ]: editor
[Seealso    ]: kill-selection , copy-selection
[File       ]: select.l
[Section    ]: リージョン
[Description]: 
*selection-ring*の先頭の要素を貼り付けます。
*selection-ring*へはcopy-selectionもしくはkill-selectionで追加します。
デフォルトでは'F9'に割り付けられています。


■yank-selection-and-pop
[Type       ]: Function
[Arguments  ]: yank-selection-and-pop &optional (ARG 0)
[Package    ]: editor
[Seealso    ]: yank-selection
[File       ]: select.l
[Section    ]: リージョン
[Description]: 
*selection-ring*の先頭の要素をyank-selectionした後に、
先頭の要素を*selection-ring*からpopします。
*selection-ring*は一要素分短くなります。


■yank-to-clipboard
[Type       ]: Function
[Arguments  ]: yank-to-clipboard &optional (ARG 1)
[Package    ]: editor
[Seealso    ]: copy-to-clipboard
[File       ]: region.l
[Section    ]: リージョン
[Description]: 
*kill-ring*の内容をクリップボードに複写します。


■yes-no-or-cancel-p
[Type       ]: Function
[Arguments  ]: yes-no-or-cancel-p FMT &rest ARGS
[Package    ]: lisp
[Seealso    ]: yes-or-no-p , no-or-yes-p , y-or-n-p
[File       ]: misc.l
[Section    ]: ダイアログ
[Description]: 
「はい」「いいえ」「キャンセル」のボタン付メッセージボックスを表示します。
デフォルトは「はい」です。「キャンセル」を選択した場合には、quitが実行されます。

  t     「はい」を選択
  nil   「いいえ」を選択

使用例：
  ;;; ダイアログを表示して選択させる。
  (yes-no-or-cancel-p "foo")
  => t          ; 「はい」を選択
  (yes-no-or-cancel-p "foo")
  => nil        ; 「いいえ」を選択


■yes-or-no-p
[Type       ]: Function
[Arguments  ]: yes-or-no-p FMT &rest ARGS
[Package    ]: lisp
[Seealso    ]: no-or-yes-p , y-or-n-p , yes-no-or-cancel-p
[File       ]: misc.l
[Section    ]: ダイアログ
[Description]: 
「はい」「いいえ」のボタン付メッセージボックスを表示します。デフォルトは
「はい」です。

  FMT  : format同様の書式が指定できます。
  ARGS : 出力書式へのパラメタとなります。

戻り値は以下のとおりです。

  t     「はい」を選択
  nil   「いいえ」を選択

使用例：
  ;;; ダイアログを表示して選択させる。
  (yes-or-no-p "foo")
  => t          ; 「はい」を選択
  (yes-or-no-p "~A" "hogehoge")  
  => nil        ; 「いいえ」を選択


■zap-to-char
[Type       ]: Function
[Arguments  ]: zap-to-char C &optional (N 1)
[Package    ]: editor
[File       ]: cmds.l
[Section    ]: 文字
[Description]: 
ポイントから指定されたキャラクタまでをkillします。


■zerop
[Type       ]: Function
[Arguments  ]: zerop NUMBER
[Package    ]: lisp
[File       ]: builtin.l
[Section    ]: 数値
[Description]: 
NUMBERがゼロならt、そうでなければnilを返します。

使用例：  
  (zerop 0)
  => t
  (zerop 1)
  => nil
  (zerop 0.0)
  => t
  (zerop -0.00)
  => t


■``'(backquote)
[Type       ]: Misc
[Arguments  ]: form
[Package    ]: ???
[Section    ]: マクロ
[Description]: 
注：タイプはリードマクロなんですが・・・
　　info-modokiでどうしようか悩んでしまいます。

``'(逆引用符(backquote))はリストをquoteします。ただし、特別な標識 `,' 
及び `,@' を用いることで、リストの要素を選択的に評価することができます。

使用例：
  ;;; 逆引用符を使用してリストを作成
  (setq f0 '(0 1 2 3))         =>  (0 1 2 3)  
  (setq f1 `(0 1 2 3))         =>  (0 1 2 3)
  (setq f2 `(4 5 ,(car f1)))   =>  (4 5 0)
  (setq f3 `(6 7 ,(cdr f1)))   =>  (6 7 (1 2 3))
  (setq f4 `(8 9 ,@(cdr f1)))  =>  (8 9 1 2 3)

参考：
  --- elisp-jpより引用 ---
  
  逆引用符の引数の中に特別な標識`,'を入れると、その値は定数でないことを表
  わします。逆引用符は`,'の引数を評価し、リスト構造にその値を入れます。
  
     (list 'a 'list 'of (+ 2 3) 'elements)
          => (a list of 5 elements)
     `(a list of ,(+ 2 3) elements)
          => (a list of 5 elements)
  
  特別な標識`,@'を用いることで、評価した値を結果のリストに"組み込む
  (splice)"こともできます。組み込まれたリストの要素は、結果のリストのほか
  の要素と同じレベルの要素になります。``'を使わない等価なコードは、往々に
  して読みにくくなります。例をあげます。
     (setq some-list '(2 3))
          => (2 3)
     (cons 1 (append some-list '(4) some-list))
          => (1 2 3 4 2 3)
     `(1 ,@some-list 4 ,@some-list)
          => (1 2 3 4 2 3)


■あるバッファが削除されたバッファかどうか調べるには？
[Type       ]: Tips
[Section    ]: その他
[Description]: 
(defun deleted-buffer-p (buffer)
    (not (ignore-errors (buffer-kanji-fileio-code buffer))))


■どの関数の頭に何がつくのでしょうか？
[Type       ]: Tips
[Seealso    ]: パッケージの概要
[Section    ]: パッケージ
[Description]: 
| パッケージという概念に関係があるんだと思いますが、どの関数の頭に何がつくの
| かというのはどこを見ればわかるんでしょうか。

  M-x apropos make-chunk RET

としたときに、

  system:make-chunk

のように表示されるものはパッケージが必要なものです。ちなみに、
si は system パッケージの、c は foreign パッケージのニックネー
ムです。
----------------------------------

  editor::xyzzy-mode  `:'が2つ表示される場合はexportされていない
        ^^
  editor:xyzzy-mode   `:'が1つ表示される場合はexportされている
        ^
  xyzzy-mode          パッケージが表示されない場合は現在のパッケージから
                      直接アクセスできる


■エラー処理関係
[Type       ]: Tips
[Section    ]: エラー
[Description]: 
エラーの種類のツリー（階層）です。

condition
├simple-condition
├serious-condition
│├error
││├simple-error
│││└plain-error
││├arithmetic-error
│││├division-by-zero
│││├floating-point-overflow
│││├floating-point-underflow
│││├domain-error
│││├bignum-overflow
│││└power-number-too-large
││├cell-error
│││├unbound-variable
│││├modify-constant
│││└undefined-function
││├control-error
│││└target-missing
││├file-error
│││├file-not-found
│││├path-not-found
│││├access-denied
│││├invalid-drive
│││├current-directory
│││├not-same-device
│││├write-protected
│││├bad-unit
│││├device-not-ready
│││├sharing-violation
│││├lock-violation
│││├wrong-disk
│││├file-exists
│││├not-empty
│││├archiver-error
│││├network-error
│││└file-lost-error
││├package-error
│││└simple-package-error
││├program-error
│││├no-target
│││├bad-macro-form
│││├invalid-function
│││├invalid-variable-list
│││├invalid-lambda-list
│││└invalid-keyword-list
││├type-error
││├range-error
││├stream-error
│││└end-of-file
││├reader-error
││├too-few-arguments
││├too-many-arguments
││├bad-type-specifier
││├read-only-buffer
││└dde-error
││  ├dde-timeout
││  ├dde-busy
││  ├dde-low-memory
││  ├dde-no-conv
││  ├dde-not-processed
││  ├dde-server-died
││  └dde-terminated-transaction
│├storage-condition
│├stack-overflow
│└invalid-byte-code
├quit
│└silent-quit
└warning
  └simple-warning


| xyzzyはもちろん、Emacs Lispでなくて Common Lispに合わせているんですよね。

そうです。コンディションタイプには独自のがありますけど。Stallman先生は、
直接ではないですがCommonのコンディションシステムに影響を与えているらしい
ので、仕組み的には似てます。

| コンディションって何ですか？

Commonでは、エラーと言わずにコンディションと言うらしいです(エラー以外も
投げられるから?)。簡単に言うとC++のtry-catchと同じです(多分、C++がパクっ
たんだろうけど)。

  class condition {};
  class serious_condition: public condition {};
  class error: public serious_condition {};
  class arithmetic_error: public error {};
  class division_by_zero: public arithmetic_error {};

ってのがある場合、

  throw division_by_zero;

とすると、

  try {...} catch (division_by_zero &) {...}

でも、

  try {...} catch (error &) {...}

でも、

  try {...} catch (condition &) {...}

でも捕まえられますよね?
それと同様に

  (error 'division-by-zero)

は、

  (handler-case ... (division-by-zero (c) ...))
  (handler-case ... (error (c) ...))
  (handler-case ... (condition (c) ...))

どれででも捕まえることができます。ま、名前が違うだけでEmacsの
condition-caseと同じです(多分)。catch&throwのタグに継承関係を付けた
のとも同じかも。

また、Emacsでできるかどうかは知りませんが、↓な感じで次のキャッチャにコ
ンディションを渡すこともできます。

  (handler-case
      (any-expression)
    (error (c)
      (some-expression)
      (error c)))

C++での
  try
    {
      any-expression;
    }
  catch (error &)
    {
      some-expression;
      throw;
    }
と同じですけど。


■キーワードファイルの書き方
[Type       ]: Tips
[Section    ]: その他
[Description]: 
キーワードファイルは*keyword-load-path*もしくはetc-pathから検索
をします。$XYZZY/etc配下のファイルを参照して下さい。

形式：
  属性を指定する場合には以下の二つの形式で記述します。

  ;*n[attrib]
  ;**fg[bg[attrib]]

      n       キーワード番号(0-5) 3-5は0-2と同じ色の反転
      fg      文字色 0-f (0ならば普通の色)
      bg      背景色 0-f (0ならば普通の色）
      attrib  属性みたいなもの。以下のものの組み合わせ
              b bold
              u underline
              s strike-out
              l 一行丸ごと
条件：
  xyzzy 0.2.207からload-keyword-fileにconditionを指定する
  ことが可能になりました。conditionはitemと比較を行います。
  $XYZZY/lisp/html-kwd.lを参照

  ;*+         conditionに関わらず以降を有効にする
  ;*-         conditionに関わらず以降を無効にする
  ;*+item     itemがconditionに一致した場合に以降を有効にする
  ;*-item     itemがconditionに一致した場合に以降を無効にする
  ;*&         以降はHTMLのタグ以外でも有効なキーワードとする
  ;*<         以降はHTMLのタグでのみ有効なキーワードとする


■キー表現使用可能文字
[Type       ]: Tips
[Seealso    ]: global-set-key , define-key
[Section    ]: キーマップ
[Description]: 
#\aや#\C-bのように表現します。ただし、"'(),;`\| の9文字は、
lispの構文上の特別な意味があるので、それを抑制するために
'\'を前置します。

  #\a           ; a
  #\;           ; ;
  #\C-b         ; Ctrl+b
  #\C-\;        ; Ctrl+;
  #\M-\;        ; Alt+;
  #\C-M-\;      ; Ctrl+Alt+;

Ctrl、Alt、Shiftの同時押しも表現できます。C-、M-、S-の順番は何でも良いです。

  #\C-          ; Ctrl同時押し
  #\S-          ; Shift同時押し
  #\C-S-        ; Ctrl+Shift同時押し
  #\M-          ; Alt同時押し
  #\M-C-        ; Alt+Ctrl同時押し
  #\M-S-        ; Alt+Shift同時押し
  #\M-C-S-      ; Alt+Ctrl+Shift同時押し


キーによっては同時押しできるキーに制限があります。
例えばS-TABは普通のやり方ではできません。どうしてもやりたければ、
set-extended-key-translate-table を参照して下さい。

  ┌─────────────┬─────────────┐
  │キー                      │同時押しできるキー        │
  │                          ├─┬─┬─┬─┬─┬─┬─┤
  │                          │M │C │M │S │C │M │M │
  │                          │  │  │C │  │S │S │C │
  │                          │  │  │  │  │  │  │S │
  ├─────────────┼─┼─┼─┼─┼─┼─┼─┤
  │ !"#$%&'()*+,-./          │○│○│○│Ｘ│Ｘ│Ｘ│Ｘ│
  │0123456789:;<=>?          │  │  │  │  │  │  │  │
  │@ABCDEFGHIJKLMNO          │  │  │  │  │  │  │  │
  │PQRSTUVWXYZ[\]^_          │  │  │  │  │  │  │  │
  │`abcdefghijklmno          │  │  │  │  │  │  │  │
  │pqrstuvwxyz{|}~           │  │  │  │  │  │  │  │
  ├─────────────┼─┼─┼─┼─┼─┼─┼─┤
  │SPC       スペースキー    │○│○│Ｘ│Ｘ│Ｘ│Ｘ│Ｘ│
  ├─────────────┼─┼─┼─┼─┼─┼─┼─┤
  │TAB       Tabキー         │○│Ｘ│Ｘ│Ｘ│Ｘ│Ｘ│Ｘ│
  │LFD                       │  │  │  │  │  │  │  │
  │RET       Enterキー       │  │  │  │  │  │  │  │
  │ESC       Escキー         │  │  │  │  │  │  │  │
  │DEL                       │  │  │  │  │  │  │  │
  │NUL                       │  │  │  │  │  │  │  │
  ├─────────────┼─┼─┼─┼─┼─┼─┼─┤
  │PageUp    Page Upキー     │○│○│○│○│○│○│○│
  │PageDown  Page Downキー   │  │  │  │  │  │  │  │
  │End       Endキー         │  │  │  │  │  │  │  │
  │Home      Homeキー        │  │  │  │  │  │  │  │
  │Left      ←キー          │  │  │  │  │  │  │  │
  │Up        ↑キー          │  │  │  │  │  │  │  │
  │Right     →キー          │  │  │  │  │  │  │  │
  │Down      ↓キー          │  │  │  │  │  │  │  │
  │Pause     Pauseキー       │  │  │  │  │  │  │  │
  │Scroll    ScrollLockキー  │  │  │  │  │  │  │  │
  │Apps      Applicationキー │  │  │  │  │  │  │  │
  │Insert    Insertキー      │  │  │  │  │  │  │  │
  │Delete    Deleteキー      │  │  │  │  │  │  │  │
  │Help      どのキー?       │  │  │  │  │  │  │  │
  │F1〜F24   F1〜F24キー     │  │  │  │  │  │  │  │
  │LBtnDown  左ボタン押し    │  │  │  │  │  │  │  │
  │LBtnUp    左ボタン離し    │  │  │  │  │  │  │  │
  │LBtnMove  左ボタンドラッグ│  │  │  │  │  │  │  │
  │RBtnDown  右ボタン押し    │  │  │  │  │  │  │  │
  │RBtnUp    右ボタン離し    │  │  │  │  │  │  │  │
  │RBtnMove  右ボタンドラッグ│  │  │  │  │  │  │  │
  │MBtnDown  中ボタン押し    │  │  │  │  │  │  │  │
  │MBtnUp    中ボタン離し    │  │  │  │  │  │  │  │
  │MBtnMove  中ボタンドラッグ│  │  │  │  │  │  │  │
  │XBtn1Down                 │  │  │  │  │  │  │  │
  │XBtn1Up                   │  │  │  │  │  │  │  │
  │XBtn1Move                 │  │  │  │  │  │  │  │
  │XBtn2Down                 │  │  │  │  │  │  │  │
  │XBtn2Up                   │  │  │  │  │  │  │  │
  │XBtn2Move                 │  │  │  │  │  │  │  │
  │MouseMove                 │  │  │  │  │  │  │  │
  └─────────────┴─┴─┴─┴─┴─┴─┴─┘

例えば、RETとC-mは内部的には同じキーと見なされます。このようなキーは以下
のとおりです。

    TAB         ; #\C-i
    LFD         ; #\C-j
    RET         ; #\C-m
    ESC         ; #\C-[
    DEL         ; #\C-?
    NUL         ; #\C-@
    #\C-SPC     ; #\C-@


■コマンドによりヒストリを変更するには？
[Type       ]: Tips
[Section    ]: その他
[Description]: 
コマンド別にミニバッファのヒストリを管理する方法です。

  ;;; ヒストリのリスト
  (setq foo-history '("qux" "quux" "quuux"))
  
  ;;; 管理したいコマンド
  (defun foo ()
    (interactive)
    (list
     (let ((*minibuffer-default-history* foo-history)) ; ヒストリを設定する
       (prog1
         (completing-read
          "foo: "               ; プロンプト文字列
          '("foo" "bar" "baz")  ; 補完候補
          :must-match nil       ; 必ず補完候補にマッチしなきゃ駄目？
          :case-fold t)         ; 大文字小文字を区別する？
         ; 変更されたかもしれないから戻しておく
         (setq foo-history *minibuffer-default-history*)))))


■チャンクの概要
[Type       ]: Tips
[Seealso    ]: si:make-chunk
[Section    ]: チャンク
[Description]: 
xyzzyの外部と入出力するためのデータを格納するオブジェクトです。
チャンク自身は以下の要素から構成されます。

        ┌──────── 16byte ───────┐
        ┏━━━━┳━━━━┳━━━━┳━━━━┓
        ┃データ長┃データ型┃格納先  ┃−      ┃
        ┗━━━━┻━━━━┻━━━━┻━━━━┛
  データ長 : チャンクが管理するデータの長さです。
             make-chunkで指定します。
  データ型 : チャンクが管理するデータの型です。
  格納先   : チャンク自体には管理するデータを内包しません。
             格納先のアドレスだけを管理します。

以下は管理イメージです。

  ;;; 使用例
  (setq chunk (si:make-chunk 'string 8)) => #<chunk 0x00081010>
  (si:chunk-data chunk)                  => 0x00A73DC8
  (si:pack-string chunk 0 "HELLO")       => "HELLO"

      ┌アドレス┐  ┌データ─────────────┐
      ┏━━━━━┳━━━━━┯━━━━━┯━━━━━┓
      ┃0x00081010┃0x00000008│string    │0x00A73DC8┃
      ┠─────╂─────┴─────┴─────┨
      ┃0x00081018┃...                               ┃
      ┠─────╂─────────────────┨
      ┃↓        ┃                                  ┃
      ┠─────╂─┬─┬─┬─┬─┬─┬─┬─┬─┨
      ┃0x00A73DC8┃H │E │L │L │O │\0│  │  │  ┃
      ┠─────╂─┴─┴─┴─┴─┴─┴─┴─┴─┨
      ┃0x00A73DD0┃...                               ┃
      ┠─────╂─────────────────┨
      ┃↓        ┃                                  ┃
      ┗━━━━━┻━━━━━━━━━━━━━━━━━┛

チャンクから情報を取得する関数は以下のとおりです。

  si:address-of  : チャンク自身のアドレスを返します。
  si:chunk-size  : チャンクが管理するデータの長さを返します。
  si:chunk-type  : チャンクが管理するデータの型を返します。
  si:chunk-data  : チャンクが管理するデータの格納先のアドレスを返します。
  si:chunk-owner : データの格納先がチャンク自身が確保したものかどうかを返します。

チャンクを操作する関数は以下のとおりです。

  si:fill-chunk  : チャンクをfill？
  si:clear-chunk : チャンクをクリア？
  si:copy-chunk  : チャンクが管理するデータをコピーします。

チャンクの入出力をする関数は以下のとおりです。

  si:pack-int8          si:unpack-int8   :  8ビット符号付き整数用
  si:pack-uint8         si:unpack-uint8  :  8ビット符号無し整数用
  si:pack-int16         si:unpack-int16  : 16ビット符号付き整数用
  si:pack-uint16        si:unpack-uint16 : 16ビット符号無し整数用
  si:pack-int32         si:unpack-int32  : 32ビット符号付き整数用
  si:pack-uint32        si:unpack-uint32 : 32ビット符号無し整数用
  si:pack-float         si:unpack-float  : float用
  si:pack-double        si:unpack-double : double用
  si:pack-string        si:unpack-string : 文字列用


■バッファの内部構造
[Type       ]: Tips
[Section    ]: バッファ
[Description]: 
各々のバッファは、(プログラマが直接アクセスすることのできない) 変数の集合を
持っています。 (どのような形であれ)それらに与えられた名前をプログラマが用いる
ことはできませんが、それらの値をアクセスし変更を行なう関数がしばしば存在して
います。 (Emacs 18 において)それらは、

  name 
    バッファ名は、バッファを名指すストリングです。これは一意であることが保
    証されています。セクション 24.1 [buffer-name]、ページ 224 参照。

  save-modified 
    この変数は、バッファが(最後に)セーブされた時間を持ちます。xref??

  modtime 
    この変数は、visit されたファイルの modification time を持ちます。これ
    はそのファイルが書かれるか読まれるかした時に設定されます。バッファが
    ファイルに書かれるたびに、この変数は(その) ファイルの modification と
    比較されます。セクション 22.3 [verify-visited-file-modtime]、ページ
    204 参照

  auto-save-modified 
    この変数は、バッファが(最後に)オートセーブされた時間を持ちます。

  last-window-start 
    この変数は、(最後に)バッファがウィンドウに表示された際、その表示を開始
    したバッファ中のポジションを持ちます。

  undodata 
    この変数は、バッファに対し(最後に)行なわれたいくつかの(訳注：set of)変
    更を undo するための方法を、(Emacs に)示す記録を持ちます。セクション
    24.8 [undo]、ページ 233 参照。

  syntax_table_v 
    この変数は、バッファに対するシンタックステーブルを持ちます。セクション
    37.3 [シンタックステーブル]、ページ 354 参照。

  markers 
    この変数は、バッファの中を指す(全ての)マーカーのリストを持ちます。バッ
    ファの内容を変更する際は、これらのマーカーは(常に) アップデートされな
    くてはいけません。チャプター 28 [マーカー]、ページ 267

  backup_up 
    この変数は、 visit されたファイルがバックアップされているか否かを示す
    フラグです。

  mark 
    この変数は、バッファに対するマークを持ちます。マークはマーカーですか
    ら、マークはリスト markers にも含まれます。

  local_var_alist 
    この変数は、ローカル変数(の全て)とそれに対応する値とを含む association
    リストを持ちます。関数 buffer-local-variables は、このリストのコピーを
    返します。

--- 追加分 ---
  mode-line-format 
    モードラインのフォーマットです。

  title-bar-format
    タイトルバーのフォーマットです。


■パッケージ
[Type       ]: Tips
[Seealso    ]: パッケージの概要
[Section    ]: パッケージ
[Description]: 
パッケージは簡単に言うと、いわゆる oblist とか obarray といったものが
いっぱいあって、リーダがシンボルを読んだときにどの obarray を使って
find-symbol や intern をするかを指定するものです。

さらに、一つのパッケージに 内部用と外部用の二つの obarray があり、通常
は内部用に intern されます。関数 export で、内部用から外部用に移動するこ
とができます。

内部用と外部用の違いは、パッケージを作るときに(作るときじゃなくてもい
いけど)他のパッケージを使用(use)すると宣言すると、ある名前を find-symbol
するときに、そのシンボルが指定されたパッケージに存在しない場合、そのパッ
ケージが使用しているパッケージの外部用にあるかを見にいくようになっています。

exportの仕組み：
  exportしても全部のパッケージから見えるわけじゃなくて、そのパッ
  ケージをuseしているパッケージから見えるようになるだけです。

  (package-use-list "user")
  => (#<package: lisp> #<package: editor>)

  (package-use-list "editor")
  => (#<package: lisp>)

  なので、editorパッケージから見えるのは、editorのシンボルとlispのexportさ
  れたシンボルだけです。
  ※「見える」というのはパッケージの修飾子なしで参照できるという意味合いです。


■パッケージの概要
[Type       ]: Tips
[Seealso    ]: パッケージ
[Section    ]: パッケージ
[Description]: 
パッケージには外部から参照されるシンボル用の空間と、内部のシンボル用の空
間があります。シンボルは最初は内部に登録されます。exportすると外部に移動
させられます。
     system        lisp        editor        user
   ┌───┐   ┌───┐   ┌───┐   ┌───┐
   │s-exp │   │l-exp │   │e-exp │   │u-exp │ <- 外部
   ├───┤   ├───┤   ├───┤   ├───┤
   │s-int │   │l-int │   │e-int │   │u-int │ <- 内部
   └───┘   └───┘   └───┘   └───┘


通常は user で作業をしています。 user は lisp, editor を利用すると宣言し
ています。そのため、l-exp, e-exp, u-exp, u-int に登録されたシンボルをパ
ッケージの修飾子無しで参照できるようになっています（太枠の部分です）。
     system        lisp        editor        user
   ┌───┐   ┏━━━┓   ┏━━━┓   ┏━━━┓
   │s-exp │   ┃l-exp ┃   ┃e-exp ┃   ┃u-exp ┃ <- 外部
   ├───┤   ┗━━━┛   ┗━━━┛   ┠───┨
   │s-int │   │l-int │   │e-int │   ┃u-int ┃ <- 内部
   └───┘   └───┘   └───┘   ┗━━━┛


プログラムを書いて新しいシンボルが出てくると、u-int に登録されます。
(in-package "editor") を実行後にシンボルを書くと e-int に登録されます。
     system        lisp        editor        user
   ┌───┐   ┏━━━┓   ┏━━━┓   ┏━━━┓
   │      │   ┃      ┃   ┃      ┃   ┃      ┃ <- 外部
   │ ...  │   ┃ ...  ┃   ┃ ...  ┃   ┃ ...  ┃
   ├───┤   ┗━━━┛   ┗━━━┛   ┠───┨
   │      │   │      │   │ bar  │   ┃ foo  ┃ 
   │ ...  │   │ ...  │   │ ...  │   ┃ ...  ┃ <- 内部
   └───┘   └───┘   └───┘   ┗━━━┛
このあたりまでは分かりやすいと思うのですが、難しいのは「自分(editor)を
useしているパッケージ(user)に既にあるシンボル(foo)をexportしようとしてエ
ラーがでる」というトラブルです。


u-intとe-intのそれぞれにfooというシンボルを定義している状態を考えます。
この状態自体は問題ありませんが、この状態でeditor::fooをexportしようとす
るとエラーが発生します。
     system        lisp        editor        user
   ┌───┐   ┏━━━┓   ┏━━━┓   ┏━━━┓
   │      │   ┃      ┃   ┃  Ｘ  ┃   ┃      ┃ <- 外部
   │ ...  │   ┃ ...  ┃   ┃ .↑  ┃   ┃ ...  ┃
   ├───┤   ┗━━━┛   ┗━│━┛   ┠───┨
   │      │   │      │   │ foo  │   ┃ foo  ┃ 
   │ ...  │   │ ...  │   │ ...  │   ┃ ...  ┃ <- 内部
   └───┘   └───┘   └───┘   ┗━━━┛
user が参照可能な範囲からすると、u-intに既にあるシンボルと同じ名前のシン
ボルがe-expに入れられようとするため、「名前が衝突するためexportできませ
ん: editor::foo」と怒られます。

  (setq foo "user")
  => "user"
  (setq ed::foo "editor")
  => "editor"
  (export '(ed::foo) "ed")
  => 名前が衝突するためexportできません: editor::foo

これ以外にもこんな形でも起きます。lisp::fooとeditor::fooの間の問題のよう
ですが、実はuserがlispとeditorをuseしていることが原因です。
     system        lisp        editor        user
   ┌───┐   ┏━━━┓   ┏━━━┓   ┏━━━┓
   │      │   ┃ foo  ┃   ┃  Ｘ  ┃   ┃      ┃ <- 外部
   │ ...  │   ┃ ...  ┃   ┃ .↑  ┃   ┃ ...  ┃
   ├───┤   ┗━━━┛   ┗━│━┛   ┠───┨
   │      │   │      │   │ foo  │   ┃      ┃ 
   │ ...  │   │ ...  │   │ ...  │   ┃ ...  ┃ <- 内部
   └───┘   └───┘   └───┘   ┗━━━┛


■ファイル操作の例
[Type       ]: Tips
[Section    ]: その他
[Description]: 
(defun find-modify-save-test (file)
  (interactive "f")
  (let (temp-buffer)
    (unwind-protect
        (progn
          ;; テンポラリのバッファを作って
          (setq temp-buffer (create-new-buffer "*foo*"))
          ;; カレントバッファにして
          (set-buffer temp-buffer)
          ;; ファイルを読み込む
          (insert-file-contents (merge-pathnames file *src-dir*))
          (goto-char (point-min))
          ;; ここでいろいろやる

          ;; ファイルに書く
          (write-file (merge-pathnames file *dst-dir*)))
      ;; バッファを作っていたら消す(kill-bufferはうるさいのでdelete-bufferで)
      (when temp-buffer
        (delete-buffer temp-buffer)))))


■印刷時のヘッダやフッタに関する表記
[Type       ]: Tips
[Section    ]: その他
[Description]: 
印刷時のヘッダやフッタに関する表記方法です。以下は 
  Toy's xyzzy memo - Data Library -
  http://www.carabiner-systems.com/xyzzy/data.html)
からの引用です。

--- 引用 ---
印刷時のヘッダやフッタに関する表記 
header and footer 1999/12/25　Written by Tetsuya Kamei [xyzzy:03752] 

  %f   ファイル名
  %F   ファイル名 (ディレクトリ付き)
  %b   バッファ名
  %p   ページ番号
  %P   総ページ数

  %Y   西暦 (YYYY)
  %y   西暦 (YY)
  %m   月   (1〜12)
  %0m  月   (01〜12)
  %*m  月   (January〜December)
  %:m  月   (Jan〜Dec)
  %d   日   (1〜31)
  %0d  日   (01〜31)
  %*w  曜日 (Sunday〜Saturday)
  %:w  曜日 (Sun〜Sat)
  %w   曜日 (日〜土)
  %h   時   (0〜23)
  %0h  時   (00〜23)
  %H   時   (0〜11)
  %0H  時   (00〜11)
  %:H  時   (1〜12)
  %0:H 時   (01〜12)
  %*H       (AM/PM)
  %*:H      (am/pm)
  %M   分   (0〜59)
  %0M  分   (00〜59)
  %s   秒   (0〜59)
  %0s  秒   (00〜59)

  %-   横線

  %l   以前を左詰め
  %r   以降を右詰め
       指定されない部分は中央揃え

  それ以外の文字はそのまま
  --------------------------------------------------------------------------------
  (デフォルト)
    [ヘッダ] %F%l%r%:w, %0d %:m %Y %0h:%0M:%0s
    [フッタ] - %p -


■各種ロード関係の関数の違い
[Type       ]: Tips
[Section    ]: その他
[Description]: 
load         インタプリタでloadします。

load-library *.lcがあればそれをロードします。
             *.lcがなければ*.lをロードします。

autoload     関数1つ単位で、呼ばれたときloadするようにできます。
             関数が呼ばれるまではloadされません。

require      あるライブラリをロードします。ただし、既に
             ロード済みならロードしません。

*modules*    この変数を見ると今どのモジュールがロード済か分かります。
             既にロード済だともうロードしません。


■各種言語キーマップ
[Type       ]: Tips
[Seealso    ]: define-key
[Section    ]: キーマップ
[Description]: 
プログラム言語毎（というか、モード毎）にキーマップを変更することができます。

  ;;; 言語用キーマップ一覧
  *basic-mode-map*              ; BASIC用
  *csharp-mode-map*             ; C#用
  *c-mode-map*                  ; C言語用
  *c++-mode-map*                ; C++用
  *css-mode-map*                ; CSS用
  *html-mode-map*               ; HTML用
  *idl-mode-map*                ; IDL用
  *java-mode-map*               ; java用
  *LaTeX-mode-map*              ; LaTeX用
  *lisp-mode-map*               ; lisp用
  *pascal-mode-map*             ; PASCAL用
  *perl-mode-map*               ; Perl用
  *sql-mode-map*                ; SQL用

  ;;; その他キーマップ一覧
  *box-drawings-mode-map*       ; 罫線描画モード用
  *buffer-menu-mode-map*        ; buffer-menu用
  *calc-mode-map*               ; calc用
  *calendar-mode-map*           ; calendar用
  *den8-view-mode-map*          ; 電信八号のメール表示用
  *den8-summary-mode-map*       ; 電信八号のメール一覧表示用
  *den8-draft-mode-map*         ; 電信八号の下書き用
  *diff-mode-map*               ; diff用
  *async-grep-mode-map*         ; 非同期grep用
  *lisp-interaction-mode-map*   ; *scratch*というかlisp-interaction-mode用
  *fundamental-mode-map*        ; モードが無いとき用
  *log-summary-mode-map*        ; niftyのログ一覧用
  *log-article-mode-map*        ; niftyのログ用
  *command-output-mode-map*     ; 外部コマンド実行時用
  *shell-mode-map*              ; shellモード用
  *tail-f-mode-map*             ; tail-f用
  *text-mode-map*               ; テキスト用
  *view-mode-map*               ; テキスト表示用

使用例：
  ;;; c++-modeでのキー割り当てを変える
  (define-key ed::*c++-mode-map* #\C-s 'foo)

  ;;; lisp-modeでのキー割り当てを変える
  (define-key ed::*lisp-mode-map*  #\TAB 'lisp-complete-symbol)

  ;;; Lispインタラクションモードでのキー割り当てを変える
  (define-key ed::*lisp-interaction-mode-map* #\TAB 'lisp-complete-symbol)


■起動時処理フロー
[Type       ]: Tips
[Section    ]: システム
[Description]: 
起動時の処理フローです。$XYZZY/xyzzy.exeを起動すると、最初はinit.cc
  から $XYZZY/lisp/startup.lが呼び出されます。以降の主なフローは以下
  のとおりです。
  
  init.cc: 
    1. startupをload-library 
       startup.l: 
        1. loadupをload-library 
           loadup.l: 
            1. estartupをload-library 
             （estartup.lで、e:startupを定義） 
            2. historyをload-library 
             （history.lで、load-history-fileを定義） 
            3. app-menuをload-library 
             （app-menu.lで、init-app-menusを定義） 
            4. siteinitをload-library 
    2. ダンプが未だならダンプ 
    3. e:startupを実行 
       estartup.lのe:startup: 
        1. フレームを初期化 
        2. *pre-startup-hook*を実行 
        3. .xyzzyを実行 
        4. ヒストリを初期化 
         （history.lのload-history-fileで、*load-history-hook*を実行） 
        5. メニューを初期化 
         （app-menu.lのinit-app-menusで、*init-app-menus-hook*を実行） 
        6. *scratch*を作成
        7.引数解析
          (process-command-lineから、*command-line-mailto-hook*とか
           *process-command-line-hook*を実行）
        8. *post-startup-hook*を実行 
  
まとめると、起動時にユーザが変更可能な部分は、以下の順番で実行さ
れます。

  1. $XYZZY/site-lisp/siteinit.l
  2. *pre-startup-hook*
  3. ~/.xyzzy
  4. *load-history-hook*
  5. *init-app-menus-hook*
  6. *command-line-mailto-hook*（-mailtoがある場合）
  7. *process-command-line-hook*（不明なオプションがある場合）
  8. *post-startup-hook*


■型一覧
[Type       ]: Misc
[Package    ]: lisp
[Section    ]: シンボル
[Description]: 
型は綺麗に階層構造を成す訳ではないのですが、subtypepでロジックに組み込ま
れているところから、嘘にならない程度に階層化したものです。[]付きの物は二
重に出現しています。

  list                                  リスト
  ├null                                ヌル
  └cons                                コンス
  atom                                  アトム
  ├number                              数値
  │├real                              実数
  ││├rational                        有理数
  │││├ratio                         分数
  │││└integer                       整数
  │││  └bignum                      −
  ││└float                           浮動小数点数
  ││  ├short-float                   小精度浮動小数点数
  ││  ├single-float                  単精度浮動小数点数
  ││  ├double-float                  倍精度浮動小数点数
  ││  └long-float                    長精度浮動小数点数
  │└complex                           複素数
  ├symbol                              シンボル
  │├[null]                            −
  │└keyword                           キーワード
  ├character                           文字
  │├base-character                    −
  ││└standard-char                   標準文字
  │└extended-character                −
  ├stream                              ストリーム
  │├two-way-stream                    双方向ストリーム
  │├echo-stream                       −
  │├broadcast-stream                  −
  │├file-stream                       ファイルストリーム
  │├synonym-stream                    文字列ストリーム
  │├string-stream                     −
  │└concatenated-stream               −
  ├sequence                            シーケンス
  │├[list]                            −
  │└[vector]                          −
  └array                               配列
    ├simple-array                      単純配列
    │└simple-string                   単純文字列
    └vector                            ベクタ
      ├simple-vector                   単純ベクタ
      └string                          文字列
        └[simple-string]               −

使用例：
  ;;; listはsequenceで、sequenceはatomだけど、listはatomではない。
  (subtypep 'list 'sequence)    => t
  (subtypep 'sequence 'atom)    => t
  (subtypep 'list 'atom)        => nil

参考：
  typespec.l


■行番号等のON/OFF
[Type       ]: Tips
[Section    ]: その他
[Description]: 
こんなに簡単にポップアップメニューから実行できます。

使用例：
  ;;; C-RBtnUpで独自のポップアップメニューにします。
  (global-set-key #\C-RBtnUp 'my-apps-popup)
  (defun my-apps-popup ()
    (interactive)
    (track-popup-menu  
     (define-popup-menu
              (:item nil "行番号(&L)"
               'toggle-line-number)
              (:item nil "スクロールバー(&B)"
               'toggle-vscroll-bar)
              (:item nil "モードライン(&M)"
               'toggle-mode-line)
              (:item nil "ファンクションキー(&F)"
               'toggle-function-bar)
              (:item nil "折り返し(&T)"
               'toggle-fold-line)
              (:item nil "リードオンリー(&R)"
               'toggle-read-only))))


■正規表現の表記
[Type       ]: Tips
[Section    ]: 検索・正規表現
[Description]: 
正規表現の表記方法です。以下は 
  Toy's xyzzy memo - Data Library -
  http://www.carabiner-systems.com/xyzzy/data.html)
からの引用です。

--- 引用 ---
正規表現
regular expression 1999/12/29　Written by Tetsuya Kamei [xyzzy:03768] 

  ^         行頭にマッチ
  $         行末にマッチ
  .         改行文字を除く任意の 1 文字にマッチ
  [...]     文字クラスのどれか 1 文字にマッチ
  [^...]    文字クラスの補集合のどれか 1 文字にマッチ
  *         直前の正規表現の 0 回以上の繰り返しにマッチ (={0,})
  +         直前の正規表現の 1 回以上の繰り返しにマッチ (={1,})
  ?         直前の正規表現の 0 回か 1 回の繰り返しにマッチ (={0,1})
  \{M,N\}   直前の正規表現の M 回以上 N 回以下の繰り返しにマッチ
  \{M,\}    直前の正規表現の M 回以上の繰り返しにマッチ
  \{,N\}    直前の正規表現の N 回以下の繰り返しにマッチ
  \{N\}     直前の正規表現の N 回の繰り返しにマッチ
  \( \)     グルーピング
  \|        選択
  \1 〜 \9  後方参照
  \<        単語の開始にマッチ
  \>        単語の終了にマッチ
  \b        単語の境界にマッチ
  \B        単語の境界以外にマッチ
  \w        英数字にマッチ
  \W        英数字以外にマッチ
  \sc       シンタックスが c の 1 文字にマッチ
  \Sc       シンタックスが c 以外の 1 文字にマッチ
  \`        バッファの先頭にマッチ
  \'        バッファの最後にマッチ
  \         メタキャラクタのエスケープ

  [たぶん xyzzy 0.2.1.186 から]
  *?        直前の正規表現の 0 回以上の最短の繰り返しにマッチ
  +?        直前の正規表現の 1 回以上の最短の繰り返しにマッチ
  ??        直前の正規表現の 0 回か 1 回の最短の繰り返しにマッチ

            (let ((str "aAaaa"))
              (string-match "Aa?" str)
              (format t "[Aa? ] ... ~S: ~D-~D~%"
                      (match-string 0) (match-beginning 0) (match-end 0))
              (string-match "Aa??" str)
              (format t "[Aa??] ... ~S: ~D-~D~%"
                      (match-string 0) (match-beginning 0) (match-end 0)))
            ->[Aa? ] ... "Aa": 1-3
              [Aa??] ... "A": 1-2

  \{M,N\}?  直前の正規表現の M 回以上 N 回以下の最短の繰り返しにマッチ
  \{M,\}?   直前の正規表現の M 回以上の最短の繰り返しにマッチ
  \{,N\}?   直前の正規表現の N 回以下の最短の繰り返しにマッチ
  \(?:regexp\)
            部分正規表現のグルーピングを行うが，後方参照を行わない
            (すなわち\1，\2とかを使って参照できない，と)

  [さらに xyzzy 0.2.2.202 から]
  \_<       シンボルの開始位置にマッチ 
  \_>       シンボルの終了位置にマッチ 
  \_b       シンボルの境界にマッチ 
  \_B       シンボルの境界以外にマッチ 
  \_s       シンボル文字にマッチ 
  \_S       シンボル文字以外にマッチ


■目的別索引
  - その他
  - エラー
  - キーマップ
  - システム
  - チャンク
  - バッファ
  - パッケージ
  - 検索・正規表現
  - 入出力
  - 関数一覧

■その他
  - C-z でアイコン化させるには？
  - DOSのコマンドをキックして結果を文字列にするには？
  - OLEオートメーションの使用例
  - あるバッファが削除されたバッファかどうか調べるには？
  - キーワードファイルの書き方
  - コマンドによりヒストリを変更するには？
  - ファイル操作の例
  - 印刷時のヘッダやフッタに関する表記
  - 各種ロード関係の関数の違い
  - 行番号等のON/OFF

■エラー
  - エラー処理関係

■キーマップ
  - BS と C-h に別々の機能を割り当てるには？
  - キー表現使用可能文字
  - 各種言語キーマップ

■システム
  - 起動時処理フロー

■チャンク
  - チャンクの概要

■バッファ
  - バッファの内部構造

■パッケージ
  - どの関数の頭に何がつくのでしょうか？
  - パッケージ
  - パッケージの概要

■検索・正規表現
  - compile-regexp すると一応高速化されるんでしょうか？
  - Emacs 互換ではない正規表現は結構あるのでしょうか？
  - 正規表現の表記

■入出力
  - xyzzyで提供されているストリームの種類

■関数一覧
  - *
  - *activate-hook*
  - *after-save-buffer-hook*
  - *apropos-no-regexp*
  - *auto-fill-hook
  - *auto-mode-alist*
  - *auto-update-per-device-directory*
  - *before-delete-buffer-hook*
  - *before-find-file-hook*
  - *before-save-buffer-hook*
  - *brackets-is-wildcard-character*
  - *buffer-bar-context-menu*
  - *buffer-bar-context-menu-buffer*
  - *buffer-bar-context-menu-handler*
  - *buffer-bar-selected-buffer-to-first*
  - *buffer-menu-mode-hook*
  - *change-buffer-colors-hook*
  - *char-encoding-list*
  - *command-line-mailto-hook*
  - *command-output-mode-hook*
  - *create-buffer-hook*
  - *dabbrev-search-this-buffer-only*
  - *dabbrevs-no-undo*
  - *deactivate-hook*
  - *default-buffer-mode*
  - *default-load-path*
  - *delete-buffer-hook*
  - *diff-mode-hook*
  - *do-completion
  - *drag-and-drop-hook*
  - *enter-minibuffer-hook*
  - *eol-cr*
  - *eol-crlf*
  - *eol-lf*
  - *error-regexp-list*
  - *etc-path*
  - *executing-macro*
  - *exit-minibuffer-hook*
  - *features*
  - *filer-chdir-hook*
  - *filer-chdir-primary-p*
  - *filer-click-toggle-marks-always*
  - *filer-directories*
  - *filer-drag-and-drop-helper
  - *filer-dual-window*
  - *filer-eat-esc*
  - *filer-echo-filename*
  - *filer-format-comma*
  - *filer-guide-text*
  - *filer-last-command-char*
  - *filer-last-file-mask*
  - *filer-left-window-p*
  - *filer-mark-file-size-unit*
  - *filer-modal*
  - *filer-path-masks*
  - *filer-primary-directory*
  - *filer-primary-file-mask*
  - *filer-retrieve-icon*
  - *filer-secondary-directory*
  - *filer-secondary-file-mask*
  - *filer-use-recycle-bin*
  - *find-file-file-not-found-hook*
  - *find-file-hooks*
  - *find-file-read-only-hook*
  - *gensym-counter*
  - *global-keymap*
  - *gmark-keep-column*
  - *grep-directory-name-hook*
  - *grep-hook*
  - *grepd-hook*
  - *gresreg-directory-name-hook*
  - *history-file-name*
  - *ime-mode-hook*
  - *init-app-menus-hook*
  - *isearch-scanner-hook*
  - *kbd-translate-table*
  - *keyboard*
  - *keyword-load-path*
  - *kill-buffer-kills-scratch*
  - *kill-ring*
  - *kill-ring-max*
  - *kill-xyzzy-hook*
  - *last-command*
  - *lisp-popup-completion-list*
  - *load-history-hook*
  - *load-path*
  - *load-pathname*
  - *make-backup-filename-hook*
  - *menu-display-length*
  - *minibuffer-buffer-name-history*
  - *minibuffer-directory-name-history*
  - *minibuffer-execute-history*
  - *minibuffer-file-name-history*
  - *minibuffer-lisp-sexp-history*
  - *minibuffer-popup-completion-list*
  - *minibuffer-save-ime-status*
  - *minibuffer-search-string-history*
  - *minibuffer-symbol-name-history*
  - *minor-mode-alist*
  - *modal-filer-save-position*
  - *modal-filer-save-size*
  - *modules*
  - *move-forward-after-undo-deletion*
  - *next-buffer-in-tab-order*
  - *next-screen-context-lines*
  - *package*
  - *page-scroll-half-window*
  - *page-scroll-keep-window-position*
  - *popup-completion-list-default*
  - *post-command-hook*
  - *post-startup-hook*
  - *pre-abbrev-expand-hook*
  - *pre-command-hook*
  - *pre-startup-hook*
  - *prefix-args*
  - *prefix-value*
  - *print-circle*
  - *print-completion-list-hook*
  - *print-length*
  - *print-option-show-dialog*
  - *print-pretty*
  - *process-command-line-hook*
  - *query-kill-buffer-hook*
  - *query-kill-xyzzy-hook*
  - *quotation-prefix*
  - *random-state*
  - *rectangle-kill-buffer*
  - *save-buffer-no-filenames-hook*
  - *save-history*
  - *save-history-hook*
  - *save-resume-info*
  - *select-pseudo-frame-hook*
  - *selection-ring*
  - *show-cursor-line-always*
  - *show-match-hook*
  - *show-matched-parenthesis*
  - *smart-indentation*
  - *standard-input*
  - *standard-output*
  - *status-bar-format*
  - *std-control-default-char*
  - *std-control-down-char*
  - *std-control-next-char*
  - *std-control-prior-char*
  - *std-control-up-char*
  - *tail-f-mode-hook*
  - *this-command*
  - *unicode-to-half-width*
  - *wrap-search*
  - +
  - -
  - /
  - /=
  - 1+
  - 1-
  - :case-fold
  - :key
  - :no-dup
  - :regexp
  - :reverse
  - :right-bound
  - :tail
  - :test
  - :test-not
  - <
  - <=
  - =
  - >
  - >=
  - abbrev-mode
  - abbreviate-display-string
  - abs
  - acons
  - acos
  - acosh
  - add-file-history-to-menu
  - add-history
  - add-hook
  - add-menu-item
  - add-menu-separator
  - add-popup-menu
  - adjoin
  - adjustable-array-p
  - alpha-char-p
  - alphanumericp
  - and
  - append
  - append-rectangle
  - append-to-register
  - append-trail-slash
  - apply
  - apps-popup
  - apropos
  - archiver-dll-config-dialog
  - archiver-dll-version
  - aref
  - array-dimension
  - array-dimensions
  - array-element-type
  - array-has-fill-pointer-p
  - array-rank
  - array-row-major-index
  - array-total-size
  - arrayp
  - ash
  - asin
  - asinh
  - assoc
  - assoc-if
  - assoc-if-not
  - atan
  - atanh
  - atom
  - auto-fill-hook
  - auto-fill-mode
  - auto-save
  - autoload
  - autoload-function-p
  - back-to-indentation
  - backward-char
  - backward-delete-char-untabify
  - backward-delete-char-untabify-or-selection
  - backward-kill-paragraph
  - backward-kill-word
  - backward-line
  - backward-paragraph
  - backward-sexp
  - backward-virtual-line
  - backward-word
  - base64-decode-region
  - base64-decode-region-to-file
  - beginning-of-buffer
  - beginning-of-defun
  - beginning-of-line
  - beginning-of-virtual-line
  - block
  - bobp
  - bolp
  - both-case-p
  - boundp
  - broadcast-stream-streams
  - BS と C-h に別々の機能を割り当てるには？
  - buffer-can-redo-p
  - buffer-can-undo-p
  - buffer-fileio-encoding
  - buffer-fold-width
  - buffer-lines
  - buffer-list
  - buffer-local-value
  - buffer-menu
  - buffer-mode
  - buffer-modified-count
  - buffer-modified-p
  - buffer-name
  - buffer-process
  - buffer-read-only
  - buffer-selector
  - buffer-size
  - buffer-stream-buffer
  - buffer-stream-p
  - buffer-stream-point
  - buffer-stream-set-point
  - buffer-substring
  - bufferp
  - bury-buffer
  - butlast
  - C-z でアイコン化させるには？
  - caaaar
  - caaadr
  - caaar
  - caadar
  - caaddr
  - caadr
  - caar
  - cadaar
  - cadadr
  - cadar
  - caddar
  - cadddr
  - caddr
  - cadr
  - calendar
  - call-arguments-limit
  - call-interactively
  - call-last-kbd-macro
  - call-process
  - capitalize-region
  - capitalize-word
  - car
  - case
  - catch
  - cd
  - cdaaar
  - cdaadr
  - cdaar
  - cdadar
  - cdaddr
  - cdadr
  - cdar
  - cddaar
  - cddadr
  - cddar
  - cdddar
  - cddddr
  - cdddr
  - cddr
  - cdr
  - ceiling
  - char
  - char-after
  - char-before
  - char-code
  - char-code-limit
  - char-columns
  - char-downcase
  - char-equal
  - char-greaterp
  - char-lessp
  - char-name
  - char-not-equal
  - char-not-greaterp
  - char-not-lessp
  - char-unicode
  - char-upcase
  - char/=
  - char<
  - char<=
  - char=
  - char>
  - char>=
  - character
  - characterp
  - check-type
  - check-valid-pathname
  - cis
  - clear-all-text-attributes
  - clear-all-text-colors
  - clear-input
  - clear-message
  - clear-minibuffer-message
  - clear-rectangle
  - clear-rectangle-selection
  - clear-reverse-region
  - clear-undo-boundary
  - close
  - clrhash
  - code-char
  - coerce
  - command-apropos
  - command-execute
  - commandp
  - compile-file-pathname
  - compile-regexp
  - compile-regexp すると一応高速化されるんでしょうか？
  - compile-regexp-keyword-list
  - compiled-function-p
  - compiled-regexp-case-fold-p
  - compiled-regexp-source
  - complement
  - completing-read
  - complex
  - complexp
  - concat
  - concatenate
  - concatenated-stream-streams
  - cond
  - conjugate
  - connect
  - cons
  - consp
  - constantp
  - continue-popup
  - copy-alist
  - copy-file
  - copy-keymap
  - copy-list
  - copy-menu-items
  - copy-rectangle
  - copy-rectangle-selection
  - copy-rectangle-selection-to-clipboard
  - copy-rectangle-to-register
  - copy-region-as-kill
  - copy-region-to-clipboard
  - copy-selection
  - copy-selection-to-clipboard
  - copy-seq
  - copy-string
  - copy-symbol
  - copy-syntax-table
  - copy-to-clipboard
  - copy-to-register
  - cos
  - cosh
  - count
  - count-buffers
  - count-column
  - count-if
  - count-if-not
  - count-windows
  - count-xyzzy-instance
  - create-archive
  - create-directory
  - create-file-buffer
  - create-menu
  - create-new-buffer
  - create-popup-menu
  - create-shortcut
  - create-tab-bar
  - create-tool-bar
  - ctl-x-4-map
  - ctl-x-4-prefix
  - ctl-x-6-map
  - ctl-x-6-prefix
  - ctl-x-map
  - ctl-x-prefix
  - current-column
  - current-line-columns
  - current-line-number
  - current-menu
  - current-virtual-column
  - current-virtual-line-number
  - current-window-configuration
  - cwd
  - dabbrev-expand
  - dabbrev-popup
  - dde-execute
  - dde-initiate
  - dde-poke
  - dde-request
  - dde-terminate
  - decf
  - declare
  - decode-escape-sequence
  - decode-mime-header
  - decode-universal-time
  - default-directory
  - default-value
  - defconstant
  - define-abbrev-table
  - define-command-bar
  - define-history-variable
  - define-key
  - define-menu
  - define-popup-menu
  - defmacro
  - defpackage
  - defstruct
  - defun
  - defvar
  - defvar-local
  - delete
  - delete-all-pseudo-frames
  - delete-backward-char
  - delete-backward-char-or-selection
  - delete-blank-lines
  - delete-buffer
  - delete-char
  - delete-char-or-selection
  - delete-command-bar
  - delete-directory
  - delete-duplicates
  - delete-file
  - delete-file-in-archive
  - delete-hook
  - delete-horizontal-spaces
  - delete-if
  - delete-if-not
  - delete-indentation
  - delete-last-ime-composition
  - delete-marker
  - delete-menu
  - delete-other-windows
  - delete-package
  - delete-pseudo-frame
  - delete-rectangle
  - delete-rectangle-selection
  - delete-region
  - delete-text-attribute-point
  - delete-text-attributes
  - delete-text-attributes-if
  - delete-text-attributes-if-not
  - delete-tool-bar
  - delete-trailing-spaces
  - delete-window
  - deleted-buffer-p
  - denominator
  - describe-function
  - describe-key
  - describe-key-briefly
  - describe-variable
  - detect-char-encoding
  - dialog
  - dialog-box
  - digit-argument
  - digit-char
  - digit-char-p
  - ding
  - directory
  - directory-name-dialog
  - directory-namestring
  - display-first-tab-char
  - display-newline-char
  - display-rest-tab-char
  - do
  - do*
  - do-all-symbols
  - do-completion
  - do-events
  - dolist
  - DOSのコマンドをキックして結果を文字列にするには？
  - dotimes
  - double-float-p
  - down-list
  - downcase-region
  - downcase-word
  - drive-dialog
  - dump-xyzzy
  - echo-stream-input-stream
  - echo-stream-output-stream
  - ed::*last-search-regexp*
  - ed::*last-search-string*
  - ed::*register-alist*
  - ed::build-summary-function
  - ed::find-file-internal
  - ed::get-register
  - ed::get-selection-start-end
  - ed::map-selection
  - ed::pseudo-frame
  - ed::set-register
  - ed::toggle-mode
  - eighth
  - eject-media
  - elt
  - Emacs 互換ではない正規表現は結構あるのでしょうか？
  - enable-post-buffer-modified-hook
  - encode-universal-time
  - end-of-buffer
  - end-of-defun
  - end-of-line
  - end-of-virtual-line
  - endp
  - enlarge-window
  - enlarge-window-horizontally
  - enum-buffers
  - eobp
  - eolp
  - eq
  - eql
  - equal
  - equalp
  - erase-buffer
  - error
  - esc-map
  - etc-path
  - eval
  - eval-buffer
  - eval-expression
  - eval-region
  - eval-when
  - evenp
  - every
  - exchange-point-and-mark
  - execute-extended-command
  - execute-shell-command
  - execute-subprocess
  - exp
  - expand-abbrev
  - export
  - expt
  - extract-archive
  - fast-scroll-down
  - fast-scroll-up
  - fboundp
  - fceiling
  - featurep
  - ffloor
  - fifth
  - file-directory-p
  - file-executable-p
  - file-exist-p
  - file-length
  - file-name-dialog
  - file-namestring
  - file-newer-than-file-p
  - file-position
  - file-property
  - file-readable-p
  - file-writable-p
  - file-write-time
  - filer
  - filer-calc-directory-byte-size
  - filer-calc-directory-size
  - filer-clear-all-marks
  - filer-close
  - filer-context-menu
  - filer-count-marks
  - filer-current-file-directory-p
  - filer-current-file-dot-dot-p
  - filer-demand-reload
  - filer-dual-window-p
  - filer-forward-line
  - filer-forward-page
  - filer-get-current-file
  - filer-get-directory
  - filer-get-drive
  - filer-get-mark-files
  - filer-get-sort-order
  - filer-get-text
  - filer-goto-bof
  - filer-goto-eof
  - filer-goto-file
  - filer-isearch
  - filer-left-window
  - filer-left-window-p
  - filer-mark
  - filer-mark-all
  - filer-mark-match-files
  - filer-modal-p
  - filer-modify-column-width
  - filer-read-char
  - filer-reload
  - filer-right-window
  - filer-scroll-left
  - filer-scroll-right
  - filer-set-directory
  - filer-set-file-mask
  - filer-set-text
  - filer-sort
  - filer-subscribe-to-reload
  - filer-swap-windows
  - filer-toggle-all-marks
  - filer-toggle-mark
  - filer-viewer
  - fill
  - fill-column
  - fill-paragraph
  - fill-pointer
  - fill-region
  - fill-region-as-paragraph
  - fill-region-hook
  - find
  - find-buffer
  - find-file
  - find-file-in-archive
  - find-file-other-window
  - find-if
  - find-if-not
  - find-load-path
  - find-name-buffer
  - find-other-file
  - find-package
  - find-pseudo-frame
  - find-symbol
  - find-text-attribute
  - find-text-attribute-if
  - find-text-attribute-if-not
  - find-text-attribute-point
  - first
  - first-error
  - flet
  - float
  - floatp
  - floor
  - fmakunbound
  - focus-tool-bar
  - following-char
  - format
  - format-date
  - format-date-string
  - format-drive
  - forward-char
  - forward-line
  - forward-list
  - forward-paragraph
  - forward-sexp
  - forward-virtual-line
  - forward-word
  - fourth
  - fresh-line
  - fround
  - ftruncate
  - funcall
  - function
  - functionp
  - gc
  - gcd
  - gensym
  - get
  - get-buffer-alternate-file-name
  - get-buffer-create
  - get-buffer-file-name
  - get-buffer-window
  - get-clipboard-data
  - get-decoded-time
  - get-disk-usage
  - get-file-attributes
  - get-file-buffer
  - get-file-info
  - get-image-size
  - get-internal-real-time
  - get-menu
  - get-menu-position
  - get-properties
  - get-selection-type
  - get-short-path-name
  - get-special-folder-location
  - get-system-directory
  - get-universal-time
  - get-window-handle
  - get-window-start-line
  - get-windows-directory
  - getf
  - gethash
  - gethash-region
  - global-set-key
  - global-unset-key
  - goal-column
  - goto-bol
  - goto-char
  - goto-column
  - goto-eol
  - goto-last-modified-line
  - goto-line
  - goto-marker
  - goto-matched-parenthesis
  - goto-virtual-bol
  - goto-virtual-column
  - goto-virtual-eol
  - goto-virtual-line
  - handler-case
  - hash-table-count
  - hash-table-p
  - hash-table-rehash-size
  - hash-table-size
  - hash-table-test
  - hide-command-bar
  - hide-restricted-region
  - hide-tool-bar
  - if
  - ignore-errors
  - ignored-extensions
  - imagpart
  - ime-push-composition-string
  - ime-register-word-dialog
  - import
  - in-package
  - incf
  - indent-for-comment
  - indent-region
  - indent-relative
  - indent-to
  - insert
  - insert-buffer
  - insert-buffer-substring
  - insert-file
  - insert-file-contents
  - insert-menu-item
  - insert-menu-separator
  - insert-popup-menu
  - insert-register
  - integerp
  - interactive
  - interactive-p
  - intern
  - intersection
  - isqrt
  - jump-to-register
  - just-one-space
  - kana-char-p
  - kanji-char-p
  - kept-undo-information
  - keymapp
  - keywordp
  - kill-all-buffers
  - kill-all-local-variables
  - kill-buffer
  - kill-line
  - kill-local-variable
  - kill-paragraph
  - kill-process
  - kill-rectangle
  - kill-rectangle-selection
  - kill-rectangle-selection-to-clipboard
  - kill-region
  - kill-region-to-clipboard
  - kill-selected-buffer
  - kill-selection
  - kill-selection-to-clipboard
  - kill-subprocess
  - kill-word
  - lambda
  - lambda-parameters-limit
  - last
  - lcm
  - ldiff
  - length
  - let
  - let*
  - lisp-complete-symbol
  - list
  - list-all-packages
  - list-archive
  - list-function
  - list-length
  - list-server-resources
  - list-servers
  - list-text-attributes
  - list-tool-bars
  - listen
  - listp
  - load-file
  - load-keyword-file
  - load-library
  - local-unset-key
  - local-variable-p
  - lock-file
  - log
  - logand
  - logior
  - long-float-p
  - long-operation
  - looking-at
  - looking-back
  - looking-for
  - lookup-dictionary
  - loop
  - lower-case-p
  - machine-name
  - macro-function
  - macroexpand
  - macroexpand-1
  - macrolet
  - make-array
  - make-backup-files
  - make-broadcast-stream
  - make-buffer-stream
  - make-concatenated-stream
  - make-echo-stream
  - make-hash-table
  - make-keymap
  - make-list
  - make-list-from-keyword-table
  - make-local-variable
  - make-marker
  - make-package
  - make-process
  - make-random-state
  - make-sequence
  - make-sparse-keymap
  - make-string-input-stream
  - make-symbol
  - make-syntax-table
  - make-temp-file-name
  - make-two-way-stream
  - make-variable-buffer-local
  - make-vector
  - makunbound
  - map
  - map-backslash-to-slash
  - map-char-encoding-region
  - map-into
  - map-slash-to-backslash
  - mapc
  - mapcan
  - mapcar
  - mapcon
  - maphash
  - mapl
  - maplist
  - mark
  - mark-dialog-box
  - mark-paragraph
  - mark-sexp
  - mark-whole-buffer
  - mark-word
  - marker-buffer
  - marker-point
  - markerp
  - match-beginning
  - match-data
  - match-end
  - match-string
  - max
  - mc-autoload
  - mc-load-file
  - mc-load-library
  - member
  - member-if
  - member-if-not
  - menup
  - merge
  - merge-pathnames
  - message
  - message-box
  - meta-prefix
  - min
  - minibuffer-message
  - minibuffer-prompt
  - minibuffer-window
  - minibuffer-window-p
  - minor-mode-map
  - minusp
  - mismatch
  - mod
  - mode-line-format
  - mode-name
  - mode-specific-indent-command
  - modify-text-attributes
  - modify-text-attributes-if
  - modify-text-attributes-if-not
  - mouse-menu-popup
  - msgbox
  - multiple-value-bind
  - multiple-value-list
  - multiple-value-setq
  - namestring
  - narrow-to-region
  - nbutlast
  - nconc
  - need-buffer-save-p
  - need-not-save
  - negative-argument
  - new-pseudo-frame
  - newline
  - newline-and-indent
  - next-buffer
  - next-error
  - next-line
  - next-line-add-newlines
  - next-page
  - next-pseudo-frame
  - next-virtual-line
  - next-window
  - next-word
  - nil
  - nintersection
  - ninth
  - no-or-yes-p
  - not
  - not-modified
  - notany
  - notevery
  - nreconc
  - nreverse
  - nset-difference
  - nset-exclusive-or
  - nstring-capitalize
  - nstring-downcase
  - nstring-upcase
  - nsublis
  - nsubst
  - nsubst-if
  - nsubst-if-not
  - nsubstitute
  - nsubstitute-if
  - nsubstitute-if-not
  - nth
  - nthcdr
  - null
  - number-of-function-bar-labels
  - numberp
  - numerator
  - nunion
  - oddp
  - OLEオートメーションの使用例
  - open
  - open-filer
  - open-line
  - open-network-stream
  - open-rectangle
  - open-rectangle-selection
  - operate-on-rectangle
  - operate-on-rectangle-selection
  - or
  - os-build-number
  - os-csd-version
  - os-major-version
  - os-minor-version
  - os-platform
  - other-buffer
  - other-pseudo-frame
  - other-window
  - overwrite-char
  - overwrite-mode
  - overwrite-rectangle
  - package-name
  - packagep
  - pairlis
  - parse-integer
  - parse-point-syntax
  - paste-from-clipboard
  - paste-rectangle-from-clipboard
  - path-equal
  - pathname-device
  - pathname-directory
  - pathname-host
  - pathname-match-p
  - pathname-name
  - pathname-type
  - peek-char
  - perform-replace
  - phase
  - plain-error
  - plusp
  - point
  - point-marker
  - point-max
  - point-min
  - point-to-register
  - pop
  - pop-to-buffer
  - popup-list
  - popup-string
  - pos-not-visible-in-window-p
  - pos-visible-in-window-p
  - position
  - position-if
  - position-if-not
  - post-buffer-modified-hook
  - post-buffer-modified-hook-enabled-p
  - pre-selection-p
  - preceding-char
  - prepend-to-register
  - previous-buffer
  - previous-line
  - previous-page
  - previous-pseudo-frame
  - previous-virtual-line
  - previous-window
  - previous-word
  - prin1
  - princ
  - print-buffer
  - print-dialog
  - process-buffer
  - process-eol-code
  - process-exit-code
  - process-filter
  - process-incode
  - process-outcode
  - process-send-string
  - process-sentinel
  - process-status
  - processp
  - prog1
  - prog2
  - progn
  - provide
  - psetq
  - pseudo-frame-selector
  - push
  - pushnew
  - quietly-read-abbrev-file
  - quit
  - quote
  - quote-char
  - quote-region
  - quote-string
  - quoted-printable-decode-region
  - quoted-printable-decode-region-to-file
  - random
  - rassoc
  - rassoc-if
  - rassoc-if-not
  - rational
  - rationalize
  - rationalp
  - re-search-backward
  - re-search-backward-again
  - re-search-forward
  - re-search-forward-again
  - read
  - read-buffer-name
  - read-char
  - read-char-encoding
  - read-char-no-hang
  - read-command-name
  - read-directory-name
  - read-exact-char-encoding
  - read-exist-buffer-name
  - read-exist-file-name
  - read-file-name
  - read-file-name-list
  - read-from-string
  - read-function-name
  - read-integer
  - read-line
  - read-registry
  - read-sexp
  - read-string
  - read-symbol-name
  - read-variable-name
  - realp
  - realpart
  - recenter
  - redo
  - reduce
  - refresh-screen
  - refresh-tool-bars
  - regexp-keyword-list
  - regexp-quote
  - regexpp
  - register-history-variable
  - rem
  - remhash
  - remove
  - remove-duplicates
  - remove-if
  - remove-if-not
  - remove-trail-slash
  - remprop
  - rename
  - rename-buffer
  - rename-file
  - rename-pseudo-frame
  - repeat-backward-search
  - repeat-complex-command
  - repeat-forward-search
  - replace
  - replace-buffer
  - replace-match
  - replace-string
  - require
  - resolve-shortcut
  - rest
  - restore-window-configuration-register
  - return
  - return-from
  - revappend
  - reverse
  - reverse-region
  - rewind-ime-composition
  - rotatef
  - round
  - row-major-aref
  - rplaca
  - rplacd
  - run-hook-with-args
  - run-hook-with-args-until-success
  - run-hook-with-args-while-success
  - run-hooks
  - safe-caaaar
  - safe-caaadr
  - safe-caaar
  - safe-caadar
  - safe-caaddr
  - safe-caadr
  - safe-caar
  - safe-cadaar
  - safe-cadadr
  - safe-cadar
  - safe-caddar
  - safe-cadddr
  - safe-caddr
  - safe-cadr
  - safe-car
  - safe-cdaaar
  - safe-cdaadr
  - safe-cdaar
  - safe-cdadar
  - safe-cdaddr
  - safe-cdadr
  - safe-cdar
  - safe-cddaar
  - safe-cddadr
  - safe-cddar
  - safe-cdddar
  - safe-cddddr
  - safe-cdddr
  - safe-cddr
  - safe-cdr
  - save-excursion
  - save-restriction
  - save-some-buffers
  - save-window-configuration-to-register
  - save-window-excursion
  - scan-buffer
  - schar
  - screen-height
  - screen-width
  - scroll-down-both-window
  - scroll-down-other-window
  - scroll-left
  - scroll-other-window
  - scroll-right
  - scroll-up-both-window
  - scroll-up-other-window
  - scroll-window
  - scroll-window-horizontally
  - search-backward
  - search-backward-again
  - search-forward
  - search-forward-again
  - second
  - select-buffer
  - select-pseudo-frame
  - selected-buffer
  - selected-pseudo-frame
  - selected-window
  - selection-backward-char
  - selection-backward-word
  - selection-beginning-of-buffer
  - selection-beginning-of-line
  - selection-beginning-of-virtual-line
  - selection-end-of-buffer
  - selection-end-of-line
  - selection-end-of-virtual-line
  - selection-forward-char
  - selection-forward-word
  - selection-mark
  - selection-next-page
  - selection-next-virtual-line
  - selection-paragraph
  - selection-point
  - selection-previous-page
  - selection-previous-virtual-line
  - selection-start-end
  - selection-whole-buffer
  - self-insert-command
  - sequencep
  - set
  - set-buffer
  - set-buffer-alternate-file-name
  - set-buffer-colors
  - set-buffer-eol-code
  - set-buffer-file-name
  - set-buffer-fileio-encoding
  - set-buffer-fold-type-column
  - set-buffer-fold-type-column-update
  - set-buffer-fold-type-none
  - set-buffer-fold-type-none-update
  - set-buffer-fold-type-window
  - set-buffer-fold-type-window-update
  - set-buffer-fold-width
  - set-buffer-modified-p
  - set-default
  - set-default-directory
  - set-default-fold-width
  - set-difference
  - set-exclusive-or
  - set-extended-key-translate-table
  - set-file-write-time
  - set-fill-column
  - set-fill-prefix
  - set-function-bar-label
  - set-goal-column
  - set-local-window-flags
  - set-macro-character
  - set-mark
  - set-mark-command
  - set-marker
  - set-menu
  - set-minor-mode-map
  - set-number-of-function-bar-labels
  - set-per-device-directory
  - set-process-eol-code
  - set-process-filter
  - set-process-incode
  - set-process-outcode
  - set-process-sentinel
  - set-syntax-comment-column
  - set-syntax-end-c++-comment
  - set-syntax-end-comment
  - set-syntax-end-multi-comment
  - set-syntax-escape
  - set-syntax-junk
  - set-syntax-match
  - set-syntax-math
  - set-syntax-option
  - set-syntax-punctuation
  - set-syntax-quote
  - set-syntax-start-c++-comment
  - set-syntax-start-column-comment
  - set-syntax-start-comment
  - set-syntax-start-multi-comment
  - set-syntax-string
  - set-syntax-symbol
  - set-syntax-symbol-prefix
  - set-syntax-tag
  - set-syntax-whitespace
  - set-syntax-word
  - set-tab-columns
  - set-text-attribute
  - set-text-color
  - set-variable
  - set-window
  - set-window-configuration
  - setf
  - setq
  - setq-default
  - setup-temp-buffer
  - seventh
  - shell-execute
  - shift-region
  - shiftf
  - short-float-p
  - show-command-bar
  - show-html-help
  - show-tool-bar
  - show-winhelp
  - shrink-window
  - shrink-window-horizontally
  - si:*activate-toplevel
  - si:*builtin-function-p
  - si:*load-library
  - si:*paste-hook*
  - si:*stream-line-number
  - si:base64-decode
  - si:base64-encode
  - si:closure-variable
  - si:dump-image-path
  - si:getenv
  - si:make-chunk
  - si:make-string-chunk
  - si:md5
  - si:quoted-printable-decode
  - si:system-root
  - si:unpack-string
  - si:uudecode
  - si:uuencode
  - si:www-url-decode
  - si:www-url-encode
  - signal-process
  - signum
  - simple-string
  - simple-string-p
  - simple-vector-p
  - sin
  - single-float-p
  - sinh
  - sit-for
  - sixth
  - skip-chars-backward
  - skip-chars-forward
  - skip-syntax-spec-backward
  - skip-syntax-spec-forward
  - skip-token
  - skip-white-backward
  - skip-white-forward
  - sleep-for
  - smart-indentation
  - software-type
  - software-version
  - some
  - sort
  - spec-map
  - special
  - special-file-p
  - special-form-p
  - specific-command-prefix
  - split-line
  - split-string
  - split-window
  - split-window-vertically
  - sqrt
  - stable-sort
  - standard-char-p
  - start-selection
  - start-selection-as-line
  - start-selection-as-region
  - start-timer
  - start-xyzzy-server
  - step
  - stop-selection
  - stop-timer
  - stop-xyzzy-server
  - store-match-data
  - streamp
  - string
  - string-capitalize
  - string-downcase
  - string-equal
  - string-greaterp
  - string-left-trim
  - string-lessp
  - string-match
  - string-matchp
  - string-not-equal
  - string-not-greaterp
  - string-not-lessp
  - string-rectangle
  - string-rectangle-selection
  - string-replace-match
  - string-right-trim
  - string-trim
  - string-upcase
  - string/=
  - string<
  - string<=
  - string=
  - string>
  - string>=
  - stringp
  - sub-directory-p
  - sublis
  - subseq
  - subsetp
  - subst
  - subst-if
  - subst-if-not
  - substitute
  - substitute-if
  - substitute-if-not
  - substitute-string
  - substring
  - subtypep
  - svref
  - switch-pseudo-frame
  - switch-to-buffer
  - switch-to-buffer-other-window
  - symbol-function
  - symbol-name
  - symbol-package
  - symbol-plist
  - symbol-value
  - symbolp
  - syntax-c++-comment-p
  - syntax-close-p
  - syntax-close-tag-p
  - syntax-end-c++-comment-p
  - syntax-end-comment-p
  - syntax-end-multi-comment-1-p
  - syntax-end-multi-comment-2-p
  - syntax-escape-p
  - syntax-junk-p
  - syntax-math-p
  - syntax-open-p
  - syntax-open-tag-p
  - syntax-punctuation-p
  - syntax-quote-p
  - syntax-start-column-comment-p
  - syntax-start-comment-p
  - syntax-start-multi-comment-1-p
  - syntax-start-multi-comment-2-p
  - syntax-string-p
  - syntax-symbol-p
  - syntax-symbol-prefix-p
  - syntax-table
  - syntax-table-p
  - syntax-whitespace-p
  - syntax-word-p
  - t
  - tab-bar-add-item
  - tab-bar-current-item
  - tab-bar-delete-item
  - tab-bar-find-item
  - tab-bar-list-items
  - tab-bar-modify-item
  - tab-bar-select-item
  - tab-columns
  - tabify
  - tagbody
  - tail-f
  - tailp
  - tan
  - tanh
  - tenth
  - terpri
  - third
  - throw
  - title-bar-format
  - toggle-ime
  - toggle-over
  - toggle-read-only
  - toggle-trace-on-error
  - tool-bar-exist-p
  - tool-bar-info
  - track-popup-menu
  - transpose-chars
  - transpose-lines
  - transpose-paragraphs
  - transpose-region
  - transpose-words
  - trap-errors
  - truename
  - truncate
  - two-way-stream-input-stream
  - two-way-stream-output-stream
  - type-of
  - undefine-key
  - undefined
  - undo
  - undo-boundary
  - unexport
  - unicode-char
  - unintern
  - uninterned
  - union
  - universal-argument
  - unless
  - unread-char
  - unregister-history-variable
  - unset-marker
  - unset-minor-mode-map
  - unshift-region
  - untabify
  - unuse-package
  - unwind-protect
  - up-list
  - upcase-region
  - upcase-word
  - update-mode-line
  - upper-case-p
  - use-keymap
  - use-local-menu
  - use-package
  - use-syntax-table
  - user-config-path
  - user-homedir-pathname
  - user-name
  - uudecode-region
  - uudecode-region-to-file
  - valid-path-p
  - values
  - values-list
  - vconcat
  - vector
  - vector-pop
  - vector-push
  - vector-push-extend
  - vectorp
  - verify-visited-file-modtime
  - version-up-xyzzy
  - view-register
  - virtual-bolp
  - virtual-eolp
  - what-cursor-position
  - when
  - while
  - widen
  - wild-pathname-p
  - window-buffer
  - window-columns
  - window-coordinate
  - window-height
  - window-lines
  - window-width
  - windowp
  - with-hash-table-iterator
  - with-input-from-buffer
  - with-input-from-selected-buffer
  - with-input-from-string
  - with-interval-message
  - with-open-file
  - with-open-stream
  - with-output-to-buffer
  - with-output-to-selected-buffer
  - with-output-to-string
  - with-output-to-temp-buffer
  - with-package-iterator
  - with-selected-window
  - with-set-buffer
  - write
  - write-char
  - write-region
  - write-registry
  - wrong-disk
  - wrong-disk-pathname
  - xyzzy-dumped-p
  - xyzzyで提供されているストリームの種類
  - y-or-n-p
  - yank
  - yank-and-pop
  - yank-pop
  - yank-rectangle
  - yank-rectangle-as-region
  - yank-rectangle-selection
  - yank-selection
  - yank-selection-and-pop
  - yank-to-clipboard
  - yes-no-or-cancel-p
  - yes-or-no-p
  - zap-to-char
  - zerop
  - ``'(backquote)
  - あるバッファが削除されたバッファかどうか調べるには？
  - どの関数の頭に何がつくのでしょうか？
  - エラー処理関係
  - キーワードファイルの書き方
  - キー表現使用可能文字
  - コマンドによりヒストリを変更するには？
  - チャンクの概要
  - バッファの内部構造
  - パッケージ
  - パッケージの概要
  - ファイル操作の例
  - 印刷時のヘッダやフッタに関する表記
  - 各種ロード関係の関数の違い
  - 各種言語キーマップ
  - 起動時処理フロー
  - 型一覧
  - 行番号等のON/OFF
  - 正規表現の表記

