プロセス


activate-xyzzy-window

type: Function
arguments: activate-xyzzy-window INSTANCE
package: editor
file: builtin.l
指定したxyzzyをアクティブにします。
  
  INSTANCE : 起動中のxyzzyに割り当てられた非負の整数

seealso: si:*instance-number
seealso: list-xyzzy-windows
[ Intro | 目次 | 索引 | 目的別 | プロセス ]

call-process

type: Function
arguments: call-process COMMAND-LINE &key :environ :no-std-handles :input :output :error :exec-directory :show :wait
package: editor
file: builtin.l
外部プログラムを実行します。完全にxyzzyの外部でプログラムを実行します。

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

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

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

seealso: execute-shell-command
seealso: make-process
[ Intro | 目次 | 索引 | 目的別 | プロセス ]

command-output-alternate-send-input

type: Function
arguments: command-output-alternate-send-input
package: editor
file: process.l
現在のバッファに関連付けられたプロセスに対して、マーカーと現在行の行末
の間の文字と \r をつなげて送ります。

マーカーは、プロセスが最後に出力したバッファの位置につけられています。

seealso: command-output-send-input
[ Intro | 目次 | 索引 | 目的別 | プロセス ]

command-output-mode

type: Function
arguments: command-output-mode
package: editor
file: process.l
バッファを command-output-mode にします。
自動保存とundo情報を記録しなくなります。

また、以下のように設定された *command-output-mode-map* がキーマップ
として使われます。
  RET : command-output-send-input 
  C-j : command-output-alternate-send-input

seealso: command-output-send-input
seealso: command-output-alternate-send-input
[ Intro | 目次 | 索引 | 目的別 | プロセス ]

command-output-send-input

type: Function
arguments: command-output-send-input &optional EOL
package: editor
file: process.l
現在のバッファに関連付けられたプロセスに対して、マーカーと現在行の行末
の間の文字と EOL をつなげて送ります。 EOL のデフォルトは \n です。

マーカーは、プロセスが最後に出力したバッファの位置につけられています。

seealso: command-output-alternate-send-input
seealso: marker-point
seealso: process-send-string
[ Intro | 目次 | 索引 | 目的別 | プロセス ]

count-xyzzy-instance

type: Function
arguments: count-xyzzy-instance
package: editor
file: builtin.l
現在起動中のxyzzyの数を返します。

[ Intro | 目次 | 索引 | 目的別 | プロセス ]

execute-region

type: Function
arguments: execute-region FROM TO
package: editor
file: process.l
リージョンの内容をバッチファイルとして実行します。

[ Intro | 目次 | 索引 | 目的別 | プロセス ]

execute-shell-command

type: Function
arguments: execute-shell-command COMMAND &optional INFILE OUTPUT ENVIRON DIRECTORY
package: editor
file: process.l
外部プログラムを実行します。結果だけを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))

seealso: call-process
seealso: execute-subprocess
seealso: shell-execute
[ Intro | 目次 | 索引 | 目的別 | プロセス ]

execute-subprocess

type: Function
arguments: execute-subprocess CMD &optional ARG BUFNAME ENVIRON DIRECTORY
package: editor
file: process.l
プログラムを BUFFNAME で指定したバッファ上で実行します。[C-x &]
結果は, 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*>

seealso: make-process
seealso: execute-shell-command
seealso: filter-region
seealso: command-output-mode
seealso: shell-command-line
[ Intro | 目次 | 索引 | 目的別 | プロセス ]

filter-buffer

type: Function
arguments: filter-buffer COMMAND
package: editor
file: process.l
バッファ全体の内容を標準入力につなげて COMMAND を実行します。[C-x #]
COMMAND の終了を待ち、終了するとバッファの内容は一旦全て消去され、
COMMAND の標準出力がバッファに出力されます。

seealso: filter-region
[ Intro | 目次 | 索引 | 目的別 | プロセス ]

filter-region

type: Function
arguments: filter-region COMMAND &optional START END
package: editor
file: process.l
リージョンの内容を標準入力につなげて COMMAND を実行します。[C-x |]
COMMAND の終了を待ち、終了するとリージョンの内容は一旦全て消去され、
COMMAND の標準出力がリージョンにに出力されます。

リージョンが指定されていないときは、COMMANDの結果を単にカーソル位置
に出力します。

seealso: filter-buffer
seealso: call-process
[ Intro | 目次 | 索引 | 目的別 | プロセス ]

kill-process

type: Function
arguments: kill-process PROCESS
package: editor
file: builtin.l
プロセスを強制的に終了させます。

seealso: kill-subprocess
seealso: signal-process
seealso: make-process
[ Intro | 目次 | 索引 | 目的別 | プロセス ]

kill-subprocess

type: Function
arguments: kill-subprocess
package: editor
file: process.l
バッファに結び付けられているプロセスを停止させます。[C-c C-k]

seealso: kill-process
seealso: make-process
[ Intro | 目次 | 索引 | 目的別 | プロセス ]

kill-xyzzy

type: Function
arguments: kill-xyzzy &optional (EXIT-CODE t)
package: editor
file: builtin.l
xyzzyを終了します。

  EXIT-CODE : xyzzyの終了ステータスを指定します。
              省略時はEXIT_SUCCESSを終了ステータスとします。
       nil  : EXIT_FAILUREを終了ステータスとします。
       t    : EXIT_SUCCESSを終了ステータスとします。
       整数 : その値を終了ステータスとします。

補足:
  EXIT-CODE の指定は xyzzy 0.2.2.239 から利用可能です。

seealso: *kill-xyzzy-hook*
seealso: *query-kill-xyzzy-hook*
seealso: save-all-buffers-kill-xyzzy
seealso: save-buffers-kill-xyzzy
[ Intro | 目次 | 索引 | 目的別 | プロセス ]

launch-application

type: Function
arguments: launch-application APP
package: editor
file: dialogs.l
プログラムを xyzzy の外部で実行します。

[ Intro | 目次 | 索引 | 目的別 | プロセス ]

list-xyzzy-windows

type: Function
arguments: list-xyzzy-windows
package: editor
file: builtin.l
起動中のxyzzyの一覧をリスト形式で返します。
  
  (list-xyzzy-windows)
  =>((0 . "*scratch* - xyzzy 0.2.2.235@XYZZY") (1 . "*untitled* - xyzzy 0.2.2.235@XYZZY") (2 . "*untitled*<2> - xyzzy 0.2.2.235@XYZZY"))

seealso: next-xyzzy-window
seealso: previous-xyzzy-window
[ Intro | 目次 | 索引 | 目的別 | プロセス ]

make-process

type: Function
arguments: make-process COMMAND-LINE &key :environ :output :exec-directory :incode :outcode :eol-code :show
package: editor
file: builtin.l
プロセスを起動します。

  COMMAND-LINE    : 実行するコマンドをオプション付で指定します。
  :environ        : 設定する環境変数を連想リスト形式で渡します。
                    (("HOME" . "C:/applications/xyzzy/")
                     ("TOPDIR" . "C:/spool/"))
  :output         : プロセスの標準出力を出力するバッファを指定します。
  :exec-directory : 実行するディレクトリを指定します。
  :incode         : プロセスの入力の文字コードを指定します。
  :outcode        : プロセスの出力の文字コードを指定します。
  :eol-code       : 改行コードを指定します。
  :show           : 外部プログラムの実行時の表示を指定します。
                    :show      通常のウィンドウ
                    :no-active 非アクティブ
                    :minimize  最小化
                    :maximize  最大化
                    :hide      非表示
                    上記以外   通常のウィンドウ

プロセスへの入力は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*))

補足:
  :show パラメータの指定は xyzzy 0.2.2.236 から利用可能です。

seealso: *xyzzyenv-show-flag*
seealso: call-process
seealso: execute-subprocess
seealso: filter-region
seealso: buffer-process
seealso: process-send-string
seealso: set-process-sentinel
seealso: set-process-filter
seealso: kill-subprocess
seealso: shell-execute
seealso: open-network-stream
[ Intro | 目次 | 索引 | 目的別 | プロセス ]

next-xyzzy-window

type: Function
arguments: next-xyzzy-window
package: editor
file: builtin.l
次のxyzzyに移動します。
移動順は起動した順です。

seealso: previous-xyzzy-window
seealso: list-xyzzy-windows
[ 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
seealso: make-process
[ Intro | 目次 | 索引 | 目的別 | プロセス ]

pipe-command

type: Function
arguments: pipe-command CMD
package: editor
file: process.l
CMD を実行し、プロセスの終了を待って標準出力を *Shell output* バッファ
に出力します。[C-x @]

seealso: execute-shell-command
[ Intro | 目次 | 索引 | 目的別 | プロセス ]

previous-xyzzy-window

type: Function
arguments: previous-xyzzy-window
package: editor
file: builtin.l
前のxyzzyに移動します。
移動順は起動した順の逆です。

seealso: next-xyzzy-window
seealso: list-xyzzy-windows
[ Intro | 目次 | 索引 | 目的別 | プロセス ]

process-buffer

type: Function
arguments: process-buffer PROCESS
package: editor
file: builtin.l
プロセスが結び付けられているバッファを返します。

seealso: buffer-process
[ Intro | 目次 | 索引 | 目的別 | プロセス ]

process-eol-code

type: Function
arguments: process-eol-code PROCESS
package: editor
file: builtin.l
PROCESSに設定された改行コードを返します。

seealso: set-process-eol-code
[ Intro | 目次 | 索引 | 目的別 | プロセス ]

process-exit-code

type: Function
arguments: process-exit-code PROCESS
package: editor
file: builtin.l
指定されたプロセスPROCESSの終了コードを取得します。

seealso: signal-process
seealso: process-status
[ Intro | 目次 | 索引 | 目的別 | プロセス ]

process-filter

type: Function
arguments: process-filter PROCESS
package: editor
file: builtin.l
PROCESSに設定されたFILTER用の関数を返します。

seealso: set-process-filter
[ Intro | 目次 | 索引 | 目的別 | プロセス ]

process-incode

type: Function
arguments: process-incode PROCESS
package: editor
file: builtin.l
PROCESSに設定された入力用の文字エンコーディングを指定します。

seealso: set-process-incode
[ Intro | 目次 | 索引 | 目的別 | プロセス ]

process-marker

type: Function
arguments: process-marker PROCESS
package: editor
file: builtin.l
プロセスに関連付けられたマーカーを返します。
プロセスの出力はマーカー位置に挿入され、
マーカー位置は挿入したテキスト長だけ進みます。

process-filter をセットした場合は、マーカーに対する処理は起こりません。
必要な場合は、通常 process-filter で自分で処理します。
プロセスに関連付けられたマーカーは、 delete-marker で削除することはできません。

seealso: make-marker
seealso: make-process
seealso: delete-marker
seealso: process-filter
[ Intro | 目次 | 索引 | 目的別 | プロセス ]

process-outcode

type: Function
arguments: process-outcode PROCESS
package: editor
file: builtin.l
PROCESSに設定された出力用の文字エンコーディングを指定します。

seealso: set-process-outcode
[ Intro | 目次 | 索引 | 目的別 | プロセス ]

process-send-n

type: Function
arguments: process-send-n
package: editor
file: process.l
バッファに結び付けられているプロセスに "n\n" を送ります。

seealso: process-send-y
[ Intro | 目次 | 索引 | 目的別 | プロセス ]

process-send-string

type: Function
arguments: process-send-string PROCESS STRING
package: editor
file: builtin.l
プロセスに文字列を送ります。

  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

seealso: make-process
[ Intro | 目次 | 索引 | 目的別 | プロセス ]

process-send-y

type: Function
arguments: process-send-y
package: editor
file: process.l
バッファに結び付けられているプロセスに "y\n" を送ります。

seealso: process-send-n
[ Intro | 目次 | 索引 | 目的別 | プロセス ]

process-sentinel

type: Function
arguments: process-sentinel PROCESS
package: editor
file: builtin.l
PROCESSに設定されたSENTINEL用の関数を返します。

seealso: set-process-sentinel
[ Intro | 目次 | 索引 | 目的別 | プロセス ]

process-status

type: Function
arguments: process-status PROCESS
package: editor
file: builtin.l
指定されたプロセスの状態を返します。

  :run  動作中
  :exit 停止

seealso: kill-process
seealso: make-process
[ Intro | 目次 | 索引 | 目的別 | プロセス ]

run-admin-console

type: Function
arguments: run-admin-console
package: editor
file: process.l
xyzzy の外部でコンソールを管理者権限で起動します。
変数 *eshell* または *shell* の値が実行されるコマンドとして使われます。

seealso: run-console
[ Intro | 目次 | 索引 | 目的別 | プロセス ]

run-console

type: Function
arguments: run-console
package: editor
file: process.l
xyzzy の外部でコンソールを起動します。
変数 *eshell* または *shell* の値が実行されるコマンドとして使われます。

seealso: run-admin-console
[ Intro | 目次 | 索引 | 目的別 | プロセス ]

set-process-eol-code

type: Function
arguments: set-process-eol-code PROCESS CODE
package: editor
file: builtin.l
PROCESSで処理する場合の改行コードCODEを設定します。

seealso: process-eol-code
[ Intro | 目次 | 索引 | 目的別 | プロセス ]

set-process-filter

type: Function
arguments: set-process-filter PROCESS FILTER
package: editor
file: builtin.l
プロセスの出力を加工するためのフィルタを指定します。
プロセスからの入力があるとset-process-filter関数でプロセスと関係づけられた
フィルタ関数が呼ばれます。
フィルタの第一引数はプロセスで第二引数は入力文字列です。
フィルタの戻り値は捨てられるようです。

使用例:
  ;;; プロセスへの出力を試すミニマルではないかも
  (let ((buf (create-new-buffer "hoge")))
    (unwind-protect ;;念の為感が強い
        (progn
           (make-process *eshell* :output buf)
           (set-process-filter (buffer-process buf)
                               (lambda (prc str)
                                 (yes-or-no-p "proc ~S str ~S" prc str)))
           (process-send-string (buffer-process buf)
                                (concat "dir&exit" *shell-ret*))
           (sleep-for 0.9))
      (delete-buffer buf)))

seealso: process-filter
seealso: set-process-outcode
seealso: set-process-incode
seealso: set-process-sentinel
seealso: process-send-string
[ Intro | 目次 | 索引 | 目的別 | プロセス ]

set-process-incode

type: Function
arguments: set-process-incode PROCESS CODE
package: editor
file: builtin.l
プロセスからset-process-filterに入力がある場合の文字エンコーディングを指定します。

seealso: set-process-outcode
[ Intro | 目次 | 索引 | 目的別 | プロセス ]

set-process-outcode

type: Function
arguments: set-process-outcode PROCESS CODE
package: editor
file: builtin.l
プロセスに対してsend-process-stringをする場合の文字エンコーディングを指定します。

seealso: set-process-incode
[ Intro | 目次 | 索引 | 目的別 | プロセス ]

set-process-sentinel

type: Function
arguments: set-process-sentinel PROCESS SENTINEL
package: editor
file: builtin.l
プロセスが終了する場合に呼ばれる関数(いわゆるSENTINEL)を指定します。

seealso: process-sentinel
seealso: set-process-filter
[ Intro | 目次 | 索引 | 目的別 | プロセス ]

shell-execute

type: Function
arguments: shell-execute FILENAME &optional DIRECTORY PARAMS &key :verb
package: editor
file: builtin.l
何かを行います。URLであればそれを開き、実行ファイルであれば実行したり、
拡張子に応じてアプリケーションを実行します。

  FILENAME  : 何か?URLもOK?
  DIRECTORY : どこでそれを実行するかを指定します。
        t       (cwd)の返されるディレクトリで実行されるみたいです。
        nil     特に指定がないのでFILENAMEのディレクトリで実行されます。
  :verb     : 実行するべき操作を指定します。
              利用可能な操作の種類は、ファイルまたはファイルによって異なります。
              通常は次の操作が有効です。
                :open       : FILENAME で指定したファイルを開きます。
                              文書ファイルまたは実行可能ファイルを指定できます。
                              1 つのフォルダを指定することもできます。
                :edit       : エディタを開きます。
                              文書以外のファイルを指定すると失敗します。
                :explore    : FILENAME で指定したフォルダを選択して、エクスプローラを起動します。
                :print      : FILENAME で指定したファイルを印刷します。
                              文書以外のファイルを指定すると失敗します。
                :runas      : 管理者権限で FILENAME で指定したファイルを開きます。
                              文書ファイルまたは実行可能ファイルを指定できます。
                              1 つのフォルダを指定することもできます。
              nil を指定すると :open が規定で利用されます。

質問:

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

seealso: execute-shell-command
seealso: make-process
[ Intro | 目次 | 索引 | 目的別 | プロセス ]

signal-process

type: Function
arguments: signal-process PROCESS
package: editor
file: builtin.l
指定されたプロセスPROCESSにシグナルを送ります。
※SIGINT?

seealso: kill-process
seealso: process-exit-code
[ Intro | 目次 | 索引 | 目的別 | プロセス ]