Emacsバッファのディレクトリへのショートカット

Emacsバッファのディレクトリへのショートカット

だから私は尋ねるこの問題シェルのディレクトリショートカット情報。アイデアは、/home/Documents/fooと入力してファイルを開くことができることですC-x C-f ~foo/file

もしそうなら、emacsバッファでzshの「名前付きディレクトリ」をエミュレートする方法はありますか?

しかし、私が使用したいショートカット定義はすでに.zshrcにあります。自分で読むことができるソリューションがあればボーナスポイントです。

ベストアンサー1

~ファイル名の拡張を担当するEmacsコンポーネントはexpand-file-name残念ながらCで書かれており、その中のコードは以下がユーザー名であると仮定しています~。幸いなことに、Emacsには関数の周りにラッパーを追加する一般的な方法があります。

続行するのに役立つ完全にテストされていないコードは次のとおりです。詳細については、Emacs Lisp マニュアルの「Emacs Lisp 関数のアドバイス」を参照してください。基本的なアイデアは、defadvice実際のコードの前に実行するコードを追加することですexpand-file-name。私のコメントで私が必然的に犯す間違いを指摘してください(修正方法を知っているかどうか)。

(defvar expand-file-name-custom-tilde-alist
  '(("foo" . "/home/Documents/foo")))

(defadvice expand-file-name (before expand-file-name-custom-tilde
                             (name &optional default-directory)
                             activate compile)
  "User-defined expansions for ~NAME in file names."
  (save-match-data
    (when (string-match "\\`\\(\\(.*/\\)?~\\([^:/]+\\)\\)/" name)
      (let ((replacement (assoc (match-string 3 name) expand-file-name-custom-tilde-alist)))
        (when replacement
          (setq name (replace-match (cdr replacement) t t name 1)))))))

.zshrc塗りつぶすショートカットexpand-file-name-custom-tilde-alist(またはエイリアスを同期するために選択したテクノロジ)を解析する練習として残します。

おすすめ記事