変数と定数


*activate-hook*

Type: Variable
Package: editor
バッファがactivateされたときに任意の処理を行うために使用されます。 
デフォルトではファイルの修正日付を確認しています。 

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*after-save-buffer-hook*

Type: Variable
Package: editor
多分save-bufferの最後に実行されます。 

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*auto-fill-hook

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

SeeAlso: auto-fill-hook
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*before-delete-buffer-hook*

Type: Variable
Package: editor
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

SeeAlso: delete-buffer
SeeAlso: *delete-buffer-hook*
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*before-find-file-hook*

Type: Variable
Package: editor
File: files.l
find-fileの最初で実行されます。 
※run-hook-with-args-until-successで実行されるので注意すること

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*before-save-buffer-hook*

Type: Variable
Package: editor
多分save-bufferの最初に実行されます。 
※run-hook-with-args-until-successで実行されるので注意すること

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*brackets-is-wildcard-character*

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

SeeAlso: wild-pathname-p
SeeAlso: pathname-match-p
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*change-buffer-colors-hook*

Type: Variable
Package: editor
途中

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*command-line-mailto-hook*

Type: Variable
Package: editor
File: estartup.l
コマンドラインで指定された -mailto オプションの引数を元に実行されます。 
※run-hooksではなくfuncallされるので注意すること

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*create-buffer-hook*

Type: Variable
Package: editor
多分create-new-bufferで実行されます。 

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*deactivate-hook*

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

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*default-load-path*

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

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

SeeAlso: *load-path*
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*delete-buffer-hook*

Type: Variable
Package: editor
delete-bufferで実行されます。 

SeeAlso: delete-buffer
SeeAlso: *before-delete-buffer-hook*
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*drag-and-drop-hook*

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

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*etc-path*

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

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

SeeAlso: etc-path
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*find-file-file-not-found-hook*

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

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*find-file-hooks*

Type: Variable
Package: editor
File: files.l
find-fileの最後で実行されます。 

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*find-file-read-only-hook*

Type: Variable
Package: editor
File: files.l
find-file-read-onlyの中で呼び出されます。 

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

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*grep-directory-name-hook*

Type: Variable
Package: editor
File: grepd.l
grep-dialogでgrep対象のディレクトリを個々に設定したい場合に実行 
されます。 
※funcallされるので注意すること

SeeAlso: *grep-hook*
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*grep-hook*

Type: Variable
Package: editor
File: grep.l
grep起動時に実行されます。 

SeeAlso: *grepd-hook*
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*grepd-hook*

Type: Variable
Package: editor
File: grepd.l
grep-dialog起動時に実行されます。 

SeeAlso: *grep-hook*
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*gresreg-directory-name-hook*

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

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*history-file-name*

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

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*keyword-load-path*

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

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

SeeAlso: *etc-path*
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*kill-buffer-kills-scratch*

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

SeeAlso: kill-buffer
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*kill-xyzzy-hook*

Type: Variable
Package: editor
xyzzyの終了時に実行されます。 

SeeAlso: *query-kill-xyzzy-hook*
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*last-command*

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

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*load-history-hook*

Type: Variable
Package: editor
File: history.l
.xyzzy処理後に実行されます。コマンドバー、セッション等のヒストリ変 
数の読み込みに使用されています。 

SeeAlso: 起動時処理フロー
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*load-path*

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

SeeAlso: si:*load-library
SeeAlso: load-library
SeeAlso: *default-load-path*
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*make-backup-filename-hook*

Type: Variable
Package: editor
File: backup.l
(多分触らないほうがいいと思われます)

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*menu-display-length*

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

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*minibuffer-buffer-name-history*

Type: Variable
Package: editor
File: minibuf.l
ミニバッファのバッファ名の履歴です。 

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*minibuffer-directory-name-history*

Type: Variable
Package: editor
File: minibuf.l
ミニバッファのディレクトリ名の履歴です。 

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*minibuffer-execute-history*

Type: Variable
Package: editor
File: minibuf.l
(詳細不明) 

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*minibuffer-file-name-history*

Type: Variable
Package: editor
File: minibuf.l
ミニバッファのファイル名の履歴です。 

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*minibuffer-lisp-sexp-history*

Type: Variable
Package: editor
File: minibuf.l
ミニバッファのS式の履歴です。 

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*minibuffer-search-string-history*

Type: Variable
Package: editor
File: minibuf.l
ミニバッファの検索文字の履歴です。 

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*minibuffer-symbol-name-history*

Type: Variable
Package: editor
File: minibuf.l
ミニバッファのシンボル名の履歴です。 

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*post-command-hook*

Type: Variable
Package: editor
コマンドループにおいてコマンドの実行後に実行されます。 

SeeAlso: *pre-command-hook*
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*post-startup-hook*

Type: Variable
Package: editor
File: estartup.l
初期設定ファイル.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*

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*pre-abbrev-expand-hook*

Type: Variable
Package: editor
File: abbrev.l
expand-abbrevの最初に実行されます。 

SeeAlso: expand-abbrev
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*pre-command-hook*

Type: Variable
Package: editor
コマンドループにおいてコマンドの実行前に実行されます。

SeeAlso: *post-command-hook*
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*pre-startup-hook*

Type: Variable
Package: editor
File: estartup.l
初期設定ファイルsiteinit.l実行後に実行されます。 

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*prefix-args*

Type: Variable
Package: editor
コマンドが数引き数付きで呼ばれた場合に設定される変数です。 

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

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

SeeAlso: *prefix-value*
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*prefix-value*

Type: Variable
Package: editor
コマンドが数引き数付きで呼ばれた時に数値が入ります。 

SeeAlso: *prefix-args*
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*print-circle*

Type: Variable
Package: lisp
循環リストの表示を省略形にします 

標準は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#)

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*print-completion-list-hook*

Type: Variable
Package: editor
File: complete.l
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))))

SeeAlso: *popup-completion-list-default*
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*print-length*

Type: Variable
Package: lisp
長いリストの表示を途中で打ち切ります。 

(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 ...)

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*print-pretty*

Type: Variable
Package: lisp
式の表示を見やすくします。 

標準は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))

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*query-kill-buffer-hook*

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

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*query-kill-xyzzy-hook*

Type: Variable
Package: editor
xyzzy終了時に実行されます。このフック変数の実行がnilだと終了しない。 
[xyzzy:03872]を参照

SeeAlso: *kill-xyzzy-hook*
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*save-buffer-no-filenames-hook*

Type: Variable
Package: editor
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)))

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*save-history*

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

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*save-history-hook*

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

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*save-resume-info*

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

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*select-pseudo-frame-hook*

Type: Variable
Package: editor
File: pframe.l
(多分フレームが選択されたときに実行されると思われます) 

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*show-match-hook*

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

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

*this-command*

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

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

:case-fold

Type: Keyword
Package: keyword
検索する場合に大文字と小文字を区別するかどうかを指定します。 

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

SeeAlso: scan-buffer
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

:no-dup

Type: Keyword
Package: keyword
検索する場合に同じ位置から行うかどうかを指定します。 

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

SeeAlso: scan-buffer
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

:regexp

Type: Keyword
Package: keyword
検索文字列が正規表現か否かを指定します。 

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

SeeAlso: scan-buffer
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

:reverse

Type: Keyword
Package: keyword
検索する場合に正方向か逆方向かを指定します。 

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

SeeAlso: scan-buffer
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

:right-bound

Type: Keyword
Package: keyword


SeeAlso: scan-buffer
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

:tail

Type: Keyword
Package: keyword
検索した場合にカーソルを文字列の先頭か末尾のどちらに位置づけるかを指定します。 

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

SeeAlso: scan-buffer
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

add-history

Type: Function
Arguments: add-history ITEM VAR
Package: editor
File: minibuf.l
(詳細不明) 

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

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

auto-fill-hook

Type: Variable
Package: editor
入力の結果、fill-columnを越えたらdo-auto-fillから実行されます。 

SeeAlso: *auto-fill-hook
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

auto-save

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

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

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

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

buffer-read-only

Type: BufferLocal
Package: editor
バッファが読み取り専用かどうかを管理します。 

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

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

char-code-limit

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

SeeAlso: *character-name-hash-table*
SeeAlso: make-character-name-hash-table
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

constantp

Type: Function
Arguments: constantp OBJECT
Package: lisp
File: builtin.l
オブジェクトがconstantかどうかを返します。 

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

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

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

declare

Type: Misc
Package: lisp
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)のように動くという訳。 

SeeAlso: special
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

defconstant

Type: Macro
Arguments: defconstant NAME VALUE &optional DOC
Package: lisp
File: evalmacs.l
定数を宣言します。 

使用例: 
  ;;; encoding.lの中より
  (defconstant *eol-crlf* 1)
  => *eol-crlf*

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

define-history-variable

Type: Macro
Arguments: define-history-variable NAME &optional (INITIAL-VALUE nil sv) DOC
Package: editor
File: history.l
ヒストリ変数を定義します。 

  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)

SeeAlso: unregister-history-variable
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

defstruct

Type: Macro
Arguments: defstruct NAME-AND-OPTIONS &rest REST
Package: lisp
File: struct.l
構造体を定義します。C言語のstruct文に相当します。 
オプションとして以下のものを指定できるようですが、詳細は不明。 

  :conc-name            (詳細不明) 
  :constructor          コンストラクタを指定する 
  :copier               コピー関数を指定する 
  :predicate            指定された構造体であるか否かを調べる関数を指定する。 
  :include              (詳細不明) 
  :type                 (詳細不明) 
  :named                (詳細不明) 
  :print-function       (詳細不明) 
  :initial-offset       (詳細不明) 

特にオプション指定しないとmake-xxxx, copy-xxxx, xxxx-pという関数が作られ 
るようです。 

  make-xxxx     デフォルトのコンストラクタ
  copy-xxxx     デフォルトのコピー関数
  xxxx-p        指定された構造体であるか否かを調べる関数

定義: 
  ;;; 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)

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

defvar

Type: Macro
Arguments: defvar NAME &optional (INITIAL-VALUE () SV) DOC
Package: lisp
File: evalmacs.l
グローバルなスペシャル変数を宣言します。ダイナミックなスコープを持ちます。 

--- 以下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)

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

defvar-local

Type: Macro
Arguments: defvar-local NAME INITIAL-VALUE &optional DOC
Package: editor
File: misc.l
変数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)

SeeAlso: make-local-variable
SeeAlso: defvar
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

enable-post-buffer-modified-hook

Type: Function
Arguments: enable-post-buffer-modified-hook ENABLE &optional BUFFER
Package: editor
File: builtin.l
post-buffer-modified-hookを有効にします。 
[xyzzy:06354]を参照
xyzzy 0.2.1.186〜

SeeAlso: post-buffer-modified-hook-enabled-p
SeeAlso: post-buffer-modified-hook
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

fmakunbound

Type: Function
Arguments: fmakunbound SYMBOL
Package: lisp
File: builtin.l
指定されたシンボルの関数定義への束縛を解消します。 
これ以降fboundpはnilを返すようになります。シンボルへの値と関数定義の束縛 
は独立しているので、fmakunboundをしてもboundpの結果は変わりません。 

使用例: 
  ;;; 関数定義への束縛を解消してみる。 
  (defun foo (x) (* x 3))       => foo
  (fboundp 'foo)                => t
  (fmakunbound 'foo)            => foo
  (fboundp 'foo)                => nil

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

function

Type: Special Form
Arguments: function FN
Package: lisp
File: builtin.l
関数の関数定義を返します。#'と同じです。 

使用例: 
  ;;; #'とfunctionとsymbol-functionを比べてみる。 
  (defun foo (x) (* x 3))
  => foo
  #'foo
  => #<lexical-closure: foo>
  (function foo)
  => #<lexical-closure: foo>
  (symbol-function 'foo)
  => #<lexical-closure: foo>

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

let

Type: Special Form
Arguments: let ({VAR|(VAR [VALUE])}*) {declaration}* {FORM}*
Package: lisp
File: builtin.l
ローカルな変数を定義してフォームを評価します。 

--- 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)

SeeAlso: let*
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

let*

Type: Special Form
Arguments: let* ({VAR|(VAR [VALUE])}*) {declaration}* {FORM}*
Package: lisp
File: builtin.l
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)

SeeAlso: let
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

make-list-from-keyword-table

Type: Function
Arguments: make-list-from-keyword-table HASH
Package: editor
File: kwd.l
キーワードハッシュテーブルから補完用のリストを作成します。 

  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*)))))

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

makunbound

Type: Function
Arguments: makunbound SYMBOL
Package: lisp
File: builtin.l
指定されたシンボルの値への束縛を解消します。 
これ以降boundpはnilを返すようになります。シンボルへの値と関数定義の束縛 
は独立しているので、makunboundをしてもfboundpの結果は変わりません。 

使用例: 
  ;;; 束縛を解消してみる。 
  (set 'foo 2)          => 2
  (boundp 'foo)         => t
  (makunbound 'foo)     => foo
  (boundp 'foo)         => nil

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

mode-name

Type: BufferLocal
Package: editor
モードの名前を格納しているローカル変数です。 
?mode-nameとbuffer-modeは必ずローカル変数になるのでしょうか? 

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

multiple-value-bind

Type: Special Form
Arguments: multiple-value-bind ({VAR}*) VALUES-FORM {declaration}* {FORM}*
Package: lisp
File: builtin.l
フォームが返す多値を受け取ります。広井さんの"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 が定義されています。これらの関数は2つの値(多値)を返します。 

  (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 
は2つの値しか返さないので、 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"

SeeAlso: values
SeeAlso: multiple-value-list
SeeAlso: multiple-value-setq
Link: http://www.geocities.jp/m_hiroi/
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

multiple-value-list

Type: Macro
Arguments: multiple-value-list FORM
Package: lisp
File: evalmacs.l
関数が返した多値をリストで返します。 

使用例: 
  (defun foo () (values 1 2 3))
  => foo
  (foo)
  => 1
     2
     3
  (multiple-value-list (foo))
  => (1 2 3)

SeeAlso: values
SeeAlso: multiple-value-bind
SeeAlso: multiple-value-setq
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

need-not-save

Type: BufferLocal
Package: editor
保存する必要があるかどうかを設定します。 
個々のバッファ毎や特定のモードだけしたくないのであれば、使用例の様にロー
カル変数にします。例えば、*scratch*の様に書き捨てたりするバッファでは、 
保存の必要はないので、tになっています。 

  t     保存の必要はない 
  nil   保存する 

使用例: 
  ;;; 現在のバッファは保存の必要はなし。 
  (make-local-variable 'need-not-save)
  => t
  (setq need-not-save t)
  => t

SeeAlso: need-buffer-save-p
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

nil

Type: Variable
Package: lisp
偽を表す定数です。 

SeeAlso: t
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

post-buffer-modified-hook

Type: Variable
Package: editor
任意のバッファで任意の操作が行われたときに呼び出されます。 
[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)

SeeAlso: enable-post-buffer-modified-hook
SeeAlso: post-buffer-modified-hook-enabled-p
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

post-buffer-modified-hook-enabled-p

Type: Function
Arguments: post-buffer-modified-hook-enabled-p &optional BUFFER
Package: editor
File: builtin.l
バッファでpost-buffer-modified-hookが有効かを判定します。 
[xyzzy:06354]を参照
xyzzy 0.2.1.186〜

SeeAlso: enable-post-buffer-modified-hook
SeeAlso: post-buffer-modified-hook
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

psetq

Type: Macro
Arguments: psetq {VAR FORM}*
Package: lisp
File: evalmacs.l
変数に値を設定します。 

  (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

SeeAlso: setq
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

quote

Type: Special Form
Arguments: quote OBJECT
Package: lisp
File: builtin.l
OBJECTを評価せずに返します。 
single quoteで代用されます。 

使用例: 
  ;;; quoteと'を使ってみる。 
  (quote x)             => x
  'x                    => x
  (eq (quote x) 'x)     => t

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

register-history-variable

Type: Function
Arguments: register-history-variable VAR
Package: editor
File: history.l
すでに定義された変数 VAR をヒストリ変数に登録します。 
ファイルに書き込まれるため、変数の内容は readable である必要があります。 
readable であるとは、具体的に言うと「文字、文字列、数値、シンボルと
それらのリストで構成されるデータ」のことです。

SeeAlso: define-history-variable
SeeAlso: unregister-history-variable
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

rotatef

Type: Macro
Arguments: rotatef {PLACE}*
Package: lisp
File: setf.l
引数として与えられた値の格納場所の内容をローテーションさせます。 
(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)

SeeAlso: setf
SeeAlso: shiftf
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

set

Type: Function
Arguments: set SYMBOL VALUE
Package: lisp
File: builtin.l
シンボルに値を束縛します。 

  SYMBOL : シンボル名 
  VALUE  : 設定する値

使用例: 
  ;;; fooというシンボルに値を束縛してみる。 
  (boundp 'foo)         => nil
  (set 'foo 2)          => 2
  (boundp 'foo)         => t
  foo                   => 2

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

set-buffer-eol-code

Type: Function
Arguments: set-buffer-eol-code CODE &optional BUFFER
Package: editor
File: builtin.l
バッファの改行コードを設定します。 
引数として改行コードの種類を表す定数が用意されています。 
昔は、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を参照のこと

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

set-default

Type: Function
Arguments: set-default SYMBOL VALUE
Package: lisp
File: builtin.l
この関数は、ただ 1つの symbol と 1 つの value のみを許す点と、その両方を 
評価する点とを除き setq-default と同じです (setq-default 参照)。 

使用例: 
  (set-default (car '(a b c)) 23)
  => 23

SeeAlso: setq-default
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

setf

Type: Macro
Arguments: setf {PLACE NEW-VALUE}*
Package: lisp
File: setf.l
このマクロは、変数にアクセスし、その値を変更するために使われます。従来用
いられてきた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)

SeeAlso: setq
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

setq

Type: Special Form
Arguments: setq {VAR FORM}*
Package: lisp
File: builtin.l
変数に値を設定します。 

  (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)

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

setq-default

Type: Macro
Arguments: setq-default VAR VAL
Package: editor
File: misc.l
シンボルがローカルでない場合のデフォルトの値を設定します。 

この関数は、各 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

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

si:*paste-hook*

Type: Variable
Package: system
クリップボードから貼り付けるときに実行されます。 

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

special

Type: Misc
Package: lisp
declare をごらんください。 

SeeAlso: declare
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

special-form-p

Type: Function
Arguments: special-form-p SYMBOL
Package: lisp
File: builtin.l
シンボルが特殊形式かどうかを返します。 

  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"

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

symbol-function

Type: Function
Arguments: symbol-function SYMBOL
Package: lisp
File: builtin.l
シンボルに束縛された関数定義を返します。 

  SYMBOL : 関数定義を取得するシンボル名 

使用例: 
  ;;; 関数定義の取得 
  (symbol-function 'foo)
  => 関数が定義されていません: foo
  (defun foo (x) (* x 2))
  => foo
  (symbol-function 'foo)
  => #<lexical-closure: foo>

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

t

Type: Variable
Package: lisp
真を表す定数です。 

SeeAlso: nil
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

title-bar-format

Type: Variable
Package: editor
タイトルバーのフォーマットを設定します。 
モードラインのフォーマットと同様です。 

使用例: 
  (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のみ。 

SeeAlso: mode-line-format
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

unregister-history-variable

Type: Function
Arguments: unregister-history-variable VAR
Package: editor
File: history.l
変数をヒストリ変数の登録から削除します。 

SeeAlso: define-history-variable
SeeAlso: register-history-variable
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

values

Type: Function
Arguments: values &rest ARGS
Package: lisp
File: evalmacs.l
多値で値を返します。 

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にはなさそう。 

SeeAlso: multiple-value-bind
SeeAlso: multiple-value-list
SeeAlso: multiple-value-setq
[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]

wild-pathname-p

Type: Function
Arguments: wild-pathname-p PATHNAME
Package: lisp
File: builtin.l
ワイルドカード指定されたパスかどうかを返します。 

  t     ワイルドカード指定されたパスです。 
  nil   ワイルドカード指定されていません。 

使用例: 
  ;;; ワイルドカードかどうかを調べてみる。 
  (wild-pathname-p "site-lisp/*.l")
  => t

[ Intro | 目次 | 索引 | 目的別 | 変数と定数 ]