私のシナリオ: タスクを切り替えて mysql を sql-interactive モードを使用してサブプロセスとして実行することにしたときに、ファイルをリモートで編集しています。Tramp は、インストールされていないリモート マシンから mysql クライアントを起動しようとします。
emacs を構成して、mysql などの特定の実行可能ファイルを常にローカルで実行し、tramp リモート マシンからではなく実行したいと考えています。これどうやってするの?
変数の値default-directory
(設定されている場合はバッファローカルになる) が Tramp 形式の場合、Tramp が開始されます。次のようにして、mysql を実行する必要があるローカル ホーム ディレクトリを指すようにリセットすることができます。
(defadvice sql-mysql (around sql-mysql-around activate)
"Reset to local home, then connect"
(let ((default-directory "/home/me"))
ad-do-it))
sql-mode
このコードは、 mysql の起動に使用することを前提としています。