Personal tools
You are here: Home ブログ matsuyama Screen に表示されている文字列を Emacs で補完する
Document Actions

Screen に表示されている文字列を Emacs で補完する

元ネタ:

http://d.hatena.ne.jp/secondlife/20060108/1136650653

screen に hardcopy させたファイルをバッファに読みこんでおいて、 hippie-expand の try-expand-dabbrev-all-buffers を使ってバッファ内の文字列を参考にさせつつ補完を実行します。

(defun screen-get-hardcopy ()
  (let ((file (expand-file-name "~/tmp/screen-hardcopy")))
    (if (= (call-process "screen" nil nil nil "-X" "hardcopy" file) 0)
        file
      nil)))

(defun screen-read-hardcopy ()
  (let ((file (screen-get-hardcopy)))
    (if file
        (let ((buf (get-buffer-create "*Screen Hardcopy*")))
          (with-current-buffer buf
            (buffer-disable-undo)
            (erase-buffer)
            (insert-file-contents file))))))

(defadvice try-expand-dabbrev-all-buffers (before try-expand-dabbrev-screen-hardcopy activate)
  (screen-read-hardcopy))

(setq hippie-expand-try-functions-list
      '(...
        try-expand-dabbrev-all-buffers # これがあるのを確認
        ...))

上を実行して hippie-expand してやれば screen に表示されている文字列も補完できるようになるはずです。

ちなみに --no-window ユーザーには全く恩恵がありません。あと screen の log を使う手もありますが、丁寧に作らないとメモリを食いまくります。

Category(s)
emacs
The URL to Trackback this entry is:
http://dev.ariel-networks.com/Members/matsuyama/complete-string-within-screen/tbping
Add comment

You can add a comment by filling out the form below. Plain text formatting.

(Required)
(Required)
(Required)
(Required)
(Required)
This helps us prevent automated spamming.
Captcha Image


Copyright(C) 2001 - 2006 Ariel Networks, Inc. All rights reserved.