SESのようないくつかのメジャーモードは、ユーザーファイル内に格納された関数を呼び出します(SESの詳細はSimple Emacs Spreadsheetを参照)。 ユーザーファイルは素性があやふやな場合があります — 初対面の人から受け取ったスプレッドシートかもしれず、会ったことのない誰かから受け取ったeメールかもしれません。そのためユーザーファイルに格納されたソースコードの関数を呼び出すのは、それが安全だと決定されるすまでは危険です。
formが安全(safe)なLisp式ならnil、危険ならなぜその式が危険かもしれないのか説明するリストをリターンする。引数unsafep-varsは、この時点で一時的なバインドだと判っているシンボルのリスト。これは主に内部的な再帰呼び出しで使用される。カレントバッファーは暗黙の引数になり、これはバッファーローカルなバインディングのリストを提供する。
Being quick and simple, unsafep does a very light analysis and
rejects many Lisp expressions that are actually safe. There are no known
cases where unsafep returns nil for an unsafe expression.
However, a safe Lisp expression can return a string with a display
property, containing an associated Lisp expression to be executed after the
string is inserted into a buffer. This associated expression can be
malicious. In order to be safe, you must delete properties from all strings
calculated by user code before inserting them into buffers.