Emacsは、「open -a」で開くと、新しいフレームでファイルを開きます
コマンドラインからEmacsを起動し、実行されていない場合はグラフィカルなEmacsを起動するか、既に実行中のEmacsのファイルにアクセスできるようにします。私はこれを行うemacsclientための「正しい」方法であると知っていますが、OS Xで多くの問題があり、ランダムにクラッシュemacs --daemonしたり、マシンのシャットダウンまたは再起動中にプロセスがハングしました、そして一般的な薄片。私はそれを機能させたいと思っていますが、現時点ではopen -a実際にははるかにうまく機能しますが、この1つの問題を除いて以下で説明します: このopen -aような使用: $ open -a Emacs file.txt Emacsが実行されていない場合は起動し、ファイルにアクセスします。しかし、現在のバッファがそうでないときにこれを行うと*scratch*、ファイルは新しいフレーム(つまり、新しいシステムウィンドウ)で開かれます。 次にセッションの例を示します。 $ open -a Emacs file.txt これによりEmacsが起動し、file.txtが開きます。そのため、このバッファーを含む単一のフレームがあります。*scratch*バッファーに切り替えて、これを行うと: $ open -a Emacs file1.txt このファイルを同じフレームで開きます。このファイルが開いているフレームが1つあり、これを行うと: $ open -a Emacs file2.txt 新しいフレームが開き、2つのフレームが同時に開きます。 への--argsスイッチを使用してEmacsにコマンドライン引数をいじってみましたopenが、次の呼び出しでは機能しないようです。たとえば: $ open -a Emacs --args --eval='(print "foo")' $ open -a Emacs --args --eval='(print "bar")' これは、メッセージバッファに「foo」のみを出力します... Emacsが2回目の最前面に表示されたが、メッセージは出力されません。 open既に実行中のアプリケーションとどのように通信するのかわかりませんが、私が知る方法を誰もが知っていますか?または、Messagesバッファよりもはるかに詳細なログを取得する方法はありますか?上記のセッション中にそのバッファに興味深いものは何も出力されないので、Emacs Lispをハックして自分がやりたいことをする方法を知りません... …