システム
Type: Variable
Package: lisp
File: evalmacs.l
ロードされたモジュールの一覧が格納されています。
(require "foo")で実際にモジュールを読み込むか否かは*modules*に登録されて
いるかどうかで決まります。モジュールの中で(provide "foo")すると、そのモ
ジュールが*modules*に追加されます。
使用例:
;;; モジュールの一覧を見てみる。
*modules*
=> ( ... )
(provide "foo")
=> ("foo" ... )
*modules*
=> ("foo" ... )
SeeAlso: provide
Type: Variable
Package: editor
File: estartup.l
xyzzy.exeに渡されたオプション引数を判定する際に呼び出されます。
*post-startup-hook*の直前で呼び出されます。
参考:
(run-hook-with-args-until-success
'*process-command-line-hook* arg)
SeeAlso: 起動時処理フロー
Type: Function
Arguments: connect HOSTNAME SERVICE &key :encoding
Package: editor
File: builtin.l
ホストのポートとの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")))
SeeAlso: open-network-stream
Type: Function
Arguments: copy-to-clipboard STRING
Package: editor
File: builtin.l
指定された文字列をクリップボードにコピーします。
STRING : クリップボードにコピーする文字列を指定します。
SeeAlso: get-clipboard-data
Type: Function
Arguments: dde-execute CHAN DATA
Package: editor
File: builtin.l
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 よくわかんないけど、とにかくエラーです
SeeAlso: dde-poke
SeeAlso: dde-request
SeeAlso: dde-terminate
Type: Function
Arguments: dde-initiate SERVICE TOPIC
Package: editor
File: builtin.l
DDE 対話を確立します。引数 SERVICE はサービス名、 TOPIC はトピックで、
それぞれ文字列型です。なにを指定するかは通信する相手のマニュアルを
参照してください。正常に終了した場合、DDE チャンネルを返します。
以降の通信ではこのDDE チャンネルを使用してください。
SeeAlso: dde-execute
SeeAlso: dde-poke
SeeAlso: dde-terminate
Type: Function
Arguments: dde-poke CHAN ITEM DATA
Package: editor
File: builtin.l
DDE POKE を実行します。
CHAN : チャンネルを指定します。
ITEM : (詳細不明)
DATA : データを文字列で指定します。
引数 CHAN は DDE チャンネル、DATA は相手にくらわす文字列です。文字列の内
容は、相手のマニュアルに従ってください。dde-poke は t を返します。
SeeAlso: dde-execute
SeeAlso: dde-request
SeeAlso: dde-terminate
Type: Function
Arguments: dde-request CHAN DATA RESULT-TYPE
Package: editor
File: builtin.l
DDE REQUEST を実行します。
CHAN : チャンネルを指定します。
DATA : データを指定します。
RESULT-TYPE : 戻り値の型を指定します。
引数 chan は DDE チャンネル、data は相手にくらわす文字列です。文字列の内
容は、相手のマニュアルに従ってください。戻り値は DDE の相手が返したもの
を返しますが、RESULT-TYPE の指定によってデータの解釈を以下のようにおこな
います。
:text : 通常の文字列を返します。
:binary : 漢字などを無視して返ってきたデータをそのまま文字列で返します。
:int8
:int16
:int32 : データをそれぞれ 8, 16, 32 ビット整数の配列とみなして整数のリ
ストで返します。配列の要素が 1 のときは整数値を返します。
戻り値型の指定は、もじらの DDE で遊ぼうと思って作っただけなので、通常は
指定しなくて構いません。
SeeAlso: dde-execute
SeeAlso: dde-poke
SeeAlso: dde-terminate
Type: Function
Arguments: dde-terminate CHAN
Package: editor
File: builtin.l
DDE 対話を終了します。引数 chan は DDE チャンネルです。正常に終了した場
合は t、すでに対話が終了していた場合は nil を返します。
CHAN : チャンネルを指定します。
Type: Function
Arguments: dump-xyzzy &optional FILENAME
Package: editor
File: builtin.l
ダンプファイルをFILENAMEにして作成します。
既に作成されていても上書きします。
FILENAME省略時のファイル名は?(未確認)
SeeAlso: version-up-xyzzy
Type: Function
Arguments: etc-path
Package: editor
File: misc.l
*etc-path*を返します。
SeeAlso: *etc-path*
Type: Function
Arguments: find-load-path FILENAME
Package: lisp
File: builtin.l
*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"
SeeAlso: *load-path*
Type: Function
Arguments: get-clipboard-data
Package: editor
File: builtin.l
クリップボードの内容を文字列として取り出します。
SeeAlso: copy-to-clipboard
Type: Function
Arguments: get-special-folder-location PLACE
Package: editor
File: builtin.l
いろいろなフォルダへのパスを返します。
PLACE : フォルダの種類を指定します。
:start-menu
:send-to
:desktop
:personal
:programs
:recent
:startup
:templates
参考:
WindowsAPIのGetSpecialFolderLocation
SeeAlso: get-windows-directory
SeeAlso: get-system-directory
Type: Function
Arguments: get-system-directory
Package: editor
File: builtin.l
Windowsシステムフォルダまでのパスを返す。
使用例:
(get-system-directory)
=> "C:/WINDOWS/System32/"
SeeAlso: get-windows-directory
SeeAlso: get-special-folder-location
Type: Function
Arguments: get-window-handle &optional WINDOW
Package: editor
File: builtin.l
指定されたウィンドウのハンドルを返します。
WINDOW : ハンドルを返すウィンドウを指定します。
使用例:
;;; カーソルがあるウィンドウのハンドルを返します。
(get-window-handle (selected-window))
Type: Function
Arguments: get-windows-directory
Package: editor
File: builtin.l
Windowsフォルダへのパスを返します。
使用例:
(get-windows-directory)
=> "C:/WINDOWS/"
SeeAlso: get-system-directory
SeeAlso: get-special-folder-location
Type: Function
Arguments: machine-name
Package: editor
File: builtin.l
マシン名を返します。
使用例:
;;; マシン名を返します。
(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")))))
Type: Function
Arguments: open-network-stream BUFFER HOSTNAME SERVICE &key :incode :outcode :eol-code
Package: editor
File: builtin.l
ホストのポートとの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: ...
SeeAlso: connect
Type: Function
Arguments: os-build-number
Package: editor
File: builtin.l
Windows NT 4.00.13811 + Service Pack 3 の場合
使用例:
(os-build-number)
=> 1381
Type: Function
Arguments: os-csd-version
Package: editor
File: builtin.l
Windows NT 4.00.1381 + Service Pack 3 の場合
使用例:
(os-csd-version)
=> "Service Pack 3"
Type: Function
Arguments: os-major-version
Package: editor
File: builtin.l
OSのメジャーバージョンを返します。
使用例:
(os-major-version)
=> 4
SeeAlso: machine-name
Type: Function
Arguments: os-minor-version
Package: editor
File: builtin.l
OSのマイナーバージョンを返します。
使用例:
(os-minor-version)
=> 0
SeeAlso: machine-name
Type: Function
Arguments: os-platform
Package: editor
File: builtin.l
OSの種類を返します。OSが95とNTで動作を変えたいときなどに使います。返され
る値は文字列ではなくシンボルです。
参考:
OS シンボル
---- ----
Windows??? win32s
Windows95 windows-95
Windows98 windows-98
WindowsMe windows-me
WindowsNT windows-nt
Windows2000 windows-2000
WindowsXP whistler
使用例:
(os-platform)
=> windows-nt
SeeAlso: machine-name
Type: Function
Arguments: read-registry SECTION KEY &optional ROOT
Package: editor
File: builtin.l
レジストリから読み込みます。
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)
Type: Function
Arguments: dump-image-path
Package: system
File: builtin.l
読み込んだダンプファイルのパスを返します。
使用例:
(si:dump-image-path)
=> "C:/Program Files/xyzzy/xyzzy.w2k"
SeeAlso: dump-xyzzy
Type: Function
Arguments: getenv VARIABLE
Package: system
File: builtin.l
環境変数の値を取り出します。
VARIABLE:環境変数名
使用例:
;;; 環境変数PATHを取り出して、個々のPATHに分割する。
(split-string (si:getenv "PATH") #\;)
=> ("c:\\usr\\local\\bin" "C:\\WINNT\\system32" "C:\\WINNT" ...)
Type: Function
Arguments: system-root
Package: system
File: builtin.l
xyzzyがインストールされているパスを返します。
※userパッケージもeditorパッケージもsystemをuse-packageしていないので、
呼び出すときはsi:を付けて、(si:system-root)としなければいけません。
使用例:
(load (merge-pathnames "lisp/henmi/foo.l" (si:system-root)))
Type: Function
Arguments: software-type
Package: lisp
File: builtin.l
ソフト名を返します。
使用例:
(software-type)
=> "xyzzy"
Type: Function
Arguments: software-version
Package: lisp
File: builtin.l
xyzzyのバージョンを返します。
使用例:
(software-version)
=> "0.2.2.228"
Type: Function
Arguments: start-xyzzy-server
Package: editor
File: builtin.l
stop-xyzzy-serverの逆です。複数のxyzzy-serverが立ち上がっている状態で
xyzzycli.exe が実行された場合、最後にアクティブになったほうが選択され
るようです。
SeeAlso: stop-xyzzy-server
Type: Function
Arguments: stop-xyzzy-server
Package: editor
File: builtin.l
xyzzycli.exeに反応しないようにします。
SeeAlso: start-xyzzy-server
Type: Function
Arguments: user-name
Package: editor
File: builtin.l
Windowsのログオンユーザー名を返します。
Type: Function
Arguments: version-up-xyzzy &rest ARGS
Package: editor
File: verup.l
亀井さんが配布しているxyzzyのアーカイブファイルをxyzzyがインストールされている
ディレクトリに展開します。
別途、ダンプファイルの再作成をする必要があります。
SeeAlso: dump-xyzzy
Type: Function
Arguments: write-registry SECTION KEY VALUE
Package: editor
File: builtin.l
レジストリに書き込みます。
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
-----
SeeAlso: read-registry
Type: Function
Arguments: xyzzy-dumped-p
Package: editor
File: builtin.l
起動時にxyzzyがダンプ済みかどうかを返します。
t ダンプ済み
nil ダンプ済みではない
ダンプ作業をしても再起動するまでは戻り値はtになりません。
Type: Tips
起動時の処理フローです。$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*