1

編集中の現在のファイルに対してシェル コマンドを実行し、シェル コマンド出力ウィンドウに出力を表示できるようにしたいと考えています。以下に示す関数を定義できました。

(defun cpp-check ()
  "Run cpp-check on current file the buffer is visiting."
  (shell-command
   (concat "/home/sburke/downloads/cppcheck-1.31/cppcheck "
       (buffer-file-name))))

唯一の問題は、出力ウィンドウがまったく前面に表示されないことです。私がやりたいのは、ウィンドウが分割され、そこに出力ウィンドウが表示されることです。また、ここで関数を .emacs ファイルに配置するように定義していますか、それとももっと良い方法がありますか?

どんな助けでも大歓迎です。ありがとう。

4

4 に答える 4

4

のドキュメントを見て'shell-commandください。これは私にとってはうまくいきました。

(defun cpp-check ()
  "Run cpp-check on current file the buffer is visiting."
  (shell-command
   (concat "/home/sburke/downloads/cppcheck-1.31/cppcheck "
       (buffer-file-name))
   "cpp-check"))

「cpp-check」という名前の新しいバッファを作成し、そこに結果を配置します。現在のフレームはに分割され、「cpp-check」バッファが他のウィンドウに配置されます。

于 2009-05-04T21:28:40.817 に答える
3

関数`pop-to-buffer'を参照してください。おもう。

ポップするバッファ名を指定できるはずです。シェルコマンド出力バッファを指定するだけです。

于 2009-05-05T02:56:51.433 に答える
2

これが私が思いついたものです。回答ありがとうございます。先に進んで cpp-check を実行する関数を定義しました。c-mode でキーにバインドしたかったので、フックとして追加しました。通常の関数とキーマップにバインドできる関数の違いに遭遇したため、関数をインタラクティブにする必要がありました。この記事はそれを説明するのに役立ちました。そのため、ショートカットを押すと結果が別のウィンドウに表示されますが、カーソルは元のバッファに残ります。これは私が望むものです。唯一の問題は、出力がミニバッファーにも表示されることです。これは、私が望むものではありません。その細かい部分を修正する考えはありますか?

(defun cpp-check ()
  (interactive)
  "Run cpp-check on current file the buffer is visiting."
  (shell-command
   (concat "/home/sburke/downloads/cppcheck-1.31/cppcheck "
       (buffer-file-name)))
  (display-buffer "*Shell Command Output*"))

(add-hook 'c-mode-common-hook
           (lambda ()
         (define-key c-mode-base-map
               "\C-x\p" 'cpp-check)))
于 2009-05-05T18:42:23.330 に答える
1

ウィンドウの分割は (split-window-vertically) ウィンドウの (正の場合は上部、負の場合は下部) 部分のサイズのオプションの引数を持ちます。

次に、switch-to-buffer または switch-to-buffer-other-window を使用して、シェルの結果バッファーを前面に移動する必要があります。

emacs でウィンドウ (フレーム) を吐き出すと、2 つの「ウィンドウ」ができてしまうことを思い出してください。これは、今では対処するには遅すぎるという当時の紛らわしい命名のためです...

于 2009-05-04T20:26:37.470 に答える