システム


*modules*

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

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

SeeAlso: provide
[ Intro | 目次 | 索引 | 目的別 | システム ]

*process-command-line-hook*

Type: Variable
Package: editor
File: estartup.l
xyzzy.exeに渡されたオプション引数を判定する際に呼び出されます。 
*post-startup-hook*の直前で呼び出されます。 

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

SeeAlso: 起動時処理フロー
[ Intro | 目次 | 索引 | 目的別 | システム ]

connect

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
[ Intro | 目次 | 索引 | 目的別 | システム ]

copy-to-clipboard

Type: Function
Arguments: copy-to-clipboard STRING
Package: editor
File: builtin.l
指定された文字列をクリップボードにコピーします。 

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

SeeAlso: get-clipboard-data
[ Intro | 目次 | 索引 | 目的別 | システム ]

dde-execute

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
[ Intro | 目次 | 索引 | 目的別 | システム ]

dde-initiate

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
[ Intro | 目次 | 索引 | 目的別 | システム ]

dde-poke

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
[ Intro | 目次 | 索引 | 目的別 | システム ]

dde-request

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
[ Intro | 目次 | 索引 | 目的別 | システム ]

dde-terminate

Type: Function
Arguments: dde-terminate CHAN
Package: editor
File: builtin.l
DDE 対話を終了します。引数 chan は DDE チャンネルです。正常に終了した場
合は t、すでに対話が終了していた場合は nil を返します。 

  CHAN : チャンネルを指定します。 

[ Intro | 目次 | 索引 | 目的別 | システム ]

dump-xyzzy

Type: Function
Arguments: dump-xyzzy &optional FILENAME
Package: editor
File: builtin.l
ダンプファイルをFILENAMEにして作成します。 
既に作成されていても上書きします。 
FILENAME省略時のファイル名は?(未確認) 

SeeAlso: version-up-xyzzy
[ Intro | 目次 | 索引 | 目的別 | システム ]

etc-path

Type: Function
Arguments: etc-path
Package: editor
File: misc.l
*etc-path*を返します。 

SeeAlso: *etc-path*
[ Intro | 目次 | 索引 | 目的別 | システム ]

find-load-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*
[ Intro | 目次 | 索引 | 目的別 | システム ]

get-clipboard-data

Type: Function
Arguments: get-clipboard-data
Package: editor
File: builtin.l
クリップボードの内容を文字列として取り出します。 

SeeAlso: copy-to-clipboard
[ Intro | 目次 | 索引 | 目的別 | システム ]

get-special-folder-location

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
[ Intro | 目次 | 索引 | 目的別 | システム ]

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
[ Intro | 目次 | 索引 | 目的別 | システム ]

get-window-handle

Type: Function
Arguments: get-window-handle &optional WINDOW
Package: editor
File: builtin.l
指定されたウィンドウのハンドルを返します。 

  WINDOW : ハンドルを返すウィンドウを指定します。 

使用例: 
  ;;; カーソルがあるウィンドウのハンドルを返します。 
  (get-window-handle (selected-window))

[ Intro | 目次 | 索引 | 目的別 | システム ]

get-windows-directory

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
[ Intro | 目次 | 索引 | 目的別 | システム ]

machine-name

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

[ Intro | 目次 | 索引 | 目的別 | システム ]

open-network-stream

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
[ Intro | 目次 | 索引 | 目的別 | システム ]

os-build-number

Type: Function
Arguments: os-build-number
Package: editor
File: builtin.l
Windows NT 4.00.13811 + Service Pack 3 の場合 

使用例:  
  (os-build-number)
  => 1381

[ Intro | 目次 | 索引 | 目的別 | システム ]

os-csd-version

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"

[ Intro | 目次 | 索引 | 目的別 | システム ]

os-major-version

Type: Function
Arguments: os-major-version
Package: editor
File: builtin.l
OSのメジャーバージョンを返します。 

使用例: 
  (os-major-version)
  => 4

SeeAlso: machine-name
[ Intro | 目次 | 索引 | 目的別 | システム ]

os-minor-version

Type: Function
Arguments: os-minor-version
Package: editor
File: builtin.l
OSのマイナーバージョンを返します。 

使用例: 
  (os-minor-version)
  => 0

SeeAlso: machine-name
[ Intro | 目次 | 索引 | 目的別 | システム ]

os-platform

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
[ Intro | 目次 | 索引 | 目的別 | システム ]

read-registry

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)

[ Intro | 目次 | 索引 | 目的別 | システム ]

si:dump-image-path

Type: Function
Arguments: dump-image-path
Package: system
File: builtin.l
読み込んだダンプファイルのパスを返します。 

使用例: 
  (si:dump-image-path)
  => "C:/Program Files/xyzzy/xyzzy.w2k"

SeeAlso: dump-xyzzy
[ Intro | 目次 | 索引 | 目的別 | システム ]

si:getenv

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

[ Intro | 目次 | 索引 | 目的別 | システム ]

si:system-root

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

[ Intro | 目次 | 索引 | 目的別 | システム ]

software-type

Type: Function
Arguments: software-type
Package: lisp
File: builtin.l
ソフト名を返します。 

使用例:  
  (software-type)
  => "xyzzy"

[ Intro | 目次 | 索引 | 目的別 | システム ]

software-version

Type: Function
Arguments: software-version
Package: lisp
File: builtin.l
xyzzyのバージョンを返します。 

使用例: 
  (software-version)
  => "0.2.2.228"

[ Intro | 目次 | 索引 | 目的別 | システム ]

start-xyzzy-server

Type: Function
Arguments: start-xyzzy-server
Package: editor
File: builtin.l
stop-xyzzy-serverの逆です。複数のxyzzy-serverが立ち上がっている状態で
xyzzycli.exe が実行された場合、最後にアクティブになったほうが選択され 
るようです。 

SeeAlso: stop-xyzzy-server
[ Intro | 目次 | 索引 | 目的別 | システム ]

stop-xyzzy-server

Type: Function
Arguments: stop-xyzzy-server
Package: editor
File: builtin.l
xyzzycli.exeに反応しないようにします。 

SeeAlso: start-xyzzy-server
[ Intro | 目次 | 索引 | 目的別 | システム ]

user-name

Type: Function
Arguments: user-name
Package: editor
File: builtin.l
Windowsのログオンユーザー名を返します。 

[ Intro | 目次 | 索引 | 目的別 | システム ]

version-up-xyzzy

Type: Function
Arguments: version-up-xyzzy &rest ARGS
Package: editor
File: verup.l
亀井さんが配布しているxyzzyのアーカイブファイルをxyzzyがインストールされている
ディレクトリに展開します。 
別途、ダンプファイルの再作成をする必要があります。 

SeeAlso: dump-xyzzy
[ Intro | 目次 | 索引 | 目的別 | システム ]

write-registry

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
[ Intro | 目次 | 索引 | 目的別 | システム ]

xyzzy-dumped-p

Type: Function
Arguments: xyzzy-dumped-p
Package: editor
File: builtin.l
起動時にxyzzyがダンプ済みかどうかを返します。 

  t     ダンプ済み
  nil   ダンプ済みではない 

ダンプ作業をしても再起動するまでは戻り値はtになりません。 

[ Intro | 目次 | 索引 | 目的別 | システム ]

起動時処理フロー

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*

[ Intro | 目次 | 索引 | 目的別 | システム ]