1

バッファを作成してすぐに非表示にする方法を探しています。これは技術情報のバッファであり、ユーザーにとっては興味のないものでありshell-command、出力を処理するために使用されます。

kill-buffer- そのバッファをライブにする必要があるため、必要なものではありません。

delete-window- バッファがどのように正確に開くかを確認する方法がないため、これも行いません (新しいウィンドウを作成するか、別のウィンドウを引き継ぐ可能性があります)。

に提供する前にバッファーを作成しても役に立ちません。以前shell-commandに存在したかどうかに関係なく、それを前面に移動し、その時点でウィンドウが 1 つしかなかった場合は、追加のウィンドウを作成しますが、より多くのウィンドウがあった場合、基本的にランダムに何かを行います。新しいウィンドウが作成される場合もあれば、作成されない場合もあります。

編集:

以下の例は、問題を示しています。

(defun haxe-start-waiting-server (&optional compiler host port)
  "Starts Haxe `haxe-compiler' on `haxe-server-host':`haxe-server-port'
with \"--wait\" for the future requests made by autocompletion
or flymake.
This function is bound to \\[haxe-start-waiting-server]"
  (interactive
   (let ((compiler-i
          (read-string "Haxe compiler: "
                       haxe-compiler t haxe-compiler))
         (host-i
          (read-string "Haxe server host: "
                       haxe-server-host t haxe-server-host))
         (port-i
          (read-number "Haxe server port: " haxe-server-port)))
     (list compiler-i host-i port-i)))
  (unless (called-interactively-p 'interactive)
    (unless compiler (setq compiler haxe-compiler))
    (unless host (setq compiler haxe-server-host))
    (unless port (setq compiler haxe-server-port)))
  (save-excursion
    (let ((new-buffer
           (get-buffer-create
            (generate-new-buffer-name
             " *haxe-waiting-server*"))))
      (async-shell-command
       (concat compiler " --wait "
               host ":" (number-to-string port))
       new-buffer)
      (bury-buffer new-buffer))))
4

3 に答える 3

3

すべてをバックグラウンドで実行したい場合は、save-window-excursion代わりにsave-excursion.

于 2012-11-12T23:26:54.543 に答える
0

Emacsマニュアルから:

一時的で、一般的にユーザーにとって無関心なバッファーは、名前がスペースで始まるため、list-buffers および buffer-menu コマンドはそれらを言及しません (ただし、そのようなバッファーがファイルを訪問した場合は、言及されます)。スペースで始まる名前も、元に戻す情報の記録を最初に無効にします。元に戻すを参照してください。

于 2012-11-12T17:46:41.610 に答える
0

バッファの動作をより細かく制御するstart-processには、 の代わりにを使用することをお勧めしますasync-shell-command。そのドキュメントから:

Elisp では、多くの場合、直接 `start-process' を呼び出す方が適切です。これは、より多くの制御を提供し、(引数を引用する必要がある) シェルの使用を強制しないためです。

于 2012-11-12T17:50:07.620 に答える