1

シェルモードに入るcd c:/dir/to/pathと、シェルモードがそれに追従しdefault-directoryc:/dir/to/pathそれは良いことです。しかし、特定のファイル(c:/another/dir/file.ext)にアクセスしているときに、入力せずに既存のシェルディレクトリをそのファイルに移動するにはどうすればよいcd c:/antoher/dir/file.extですか?

emacsにそのための既存の機能はありますか? かなり探しましたが、残念ながら見つかりませんでした。

Win7 で Emacs 24.2.1 を使用しています。

編集:

以下のような見栄えの悪い関数を書きました。提案/アドバイスをいただければ幸いです (私は elisp の初心者です)。(プレフィックス付きの対話型呼び出しを使用すると、シェル バッファーと現在のディレクトリが表示されます。これよりも優れたものがすでに発明されているのではないかと繰り返し考えています)。

  (defun my-shell-with-current-directory (&optional arg)
  (interactive "P")
  (let* ((sp (get-process "shell"))
         (spbuf (and sp (process-buffer sp)))
         (dir (if buffer-file-name (file-name-directory buffer-file-name) default-directory)))
    (if (and arg sp spbuf dir)
        (progn 
          (comint-simple-send sp (concat "cd /d " dir))
          (display-buffer spbuf)
          (save-excursion
            (set-buffer spbuf)
            (cd dir)
            )
          )
      (progn
        (shell)
        (comint-simple-send sp "setlocal enableextensions")
        )
      )
    )
  )
4

1 に答える 1

0

setq を使用していつでも default-directory を設定できます。そのコードをフックとして find-file-hooks に追加できます。また、必要な設定で find-file コマンドをアドバイスすることもできます。ここまでは自分の考えだけ...

于 2013-02-01T07:37:37.017 に答える