そうか stuff で C-m までするには '\012' と付ければ良いのか。
と、まあ何とか上手く動作してくれた様です。
そもそも私は .emacs に、
(progn (make-variable-buffer-local 'blocal-string) ;; buffer local な変数を生成。 (setq blocal-string "") (let ((num (check-elem-no))) (setcdr ; mode-line-fomat に変数を加える。 (nthcdr (- num 2) mode-line-format) (cons '" " (cons 'blocal-string (cons '" " (nthcdr num mode-line-format))))))) (defvar apply-locale-list (list '("EUC-JP") '("UTF-8") '("SJIS"))) (defvar apply-locale-history nil) (defun apply-locale (&optional locale coding) "shell buffer の locale を変更する。" (interactive "P") (let ((locale (or locale (completing-read "locale?: " apply-locale-list nil t "" 'apply-locale-history))) (coding (or coding (read-coding-system "coding-system?: ")))) (goto-char (point-max)) (insert (concat "export" " " "LANG=ja_JP." locale)) (comint-send-input) (goto-char (point-max)) (set-buffer-process-coding-system coding coding) (setq blocal-string (concat "<" locale ">"))))
などといった適当なコードを書いて、shell mode にて locale の切り替えを行なっています。
今回の Screen の設定は、これとやってることは同じなのでした。
exec だと shell の built-in command である export を直接実行できないので、export のコマンドラインを echo した結果を、元のシェルプロセスの標準入力に送り込んでいる訳です。
そういう意味でも、znz さんが提示された様な、`stuff' を使う方が理に適うものだと思います。しかし、私はこの `stuff' を、
# copy mode に入ると同時に mark. bind ^@ eval "copy" "stuff ' '"
の様にしか使っておらず (この bind 自体、殆ど使っていませんが)、シェルプロセスのコマンド入力行自体に貼り付ける、しかも、`\012' を含めて return まで実行する、なんて発想はありませんでした。
私の設定では、eval に `!!!' と fdpats を指定しています。
この指定内容について、babie さんが考察されていますが、実は私にも良く判っていないのでした。
私もマニュアルページに書かれていることを読んだだけでして、書かれている内容を正しく理解するには至っていません。ごめんなさい。
ただ、指定している 3文字の記号 `!!!' は、eval で実行するプロセスのファイルディスクリプタ 0, 1, 2 (標準入出力とエラー出力) に対応しており、先頭から順に stdin, stdout, stderr なことは、fdpat.ps の中身からも間違い無い様です。そして `!' は、
感嘆符 (!) はファイルディスクリプタを既に実行中のプロセスに接続する。
なので、`!!!' だと、eval の標準入出力とエラー出力を実行中のシェルプロセスに接続していることになります。ここでは標準出力だけをシェルプロセスの入力に流し込めれば良いので 3つとも指定する必要は無いのですが、他の指定だと上手く行かなかったので、この様になりました。
一応、このエントリに screen に添付されている fdpats.ps の出力結果の画像を添付してみました。(画像の添付は初めてなので、上手く行くか不安ですが)
この内容と突き合わせれば理解可能な筈なんですが、色々やってみても、書かれている様な動作をしている様には見えないのでした。screen が悪いのか ReadLine などの環境が悪いのか、はたまた私の頭が悪いのか。
これが正しく使えると screen を使ったフィルタが作成できるので、有意義な結果が得られると思うのですが、なかなか上手く行きません……
[追記]
画像の添付は思った様には行きませんでした。勝手に、元のサイズの画像へのリンクとかが生成される気でいたのでした。そういや、そんなリソースの無駄使いはできませんものね……
これでは何が書いてあるのか読めやしないですね……