マウスを使用して、同じウィンドウでdiredからファイルを開く


7

diredバッファから選択されたときに、マウスを使用して現在のウィンドウでファイルを開くようにemacsをどのように構成しますか?

つまり、ディレクトリを開いてマウスでファイルを選択すると、diredバッファを表示したのと同じウィンドウにファイルが表示されます。


diredバッファでクリックした場所と同じウィンドウでファイルを開く方法」という意味ですか?
Kaushal Modi、2015

はい、それは私が求めていることです。
ジム、

カーソルを使用してEnterキーを押すと、同じウィンドウで開きます。マウスを使用して選択すると、別のウィンドウでウィンドウが開きます(ウィンドウが1つしか開いていない場合は、ウィンドウが分割されます)。
ジム

1
これをチェックしてください:emacswiki.org/emacs/DiredReuseDirectoryBuffer私はそれを試す機会がありませんでした。
Kaushal Modi、2015

回答:


4

本当に必要な場合は、独自のコマンドを定義してそれを実行してください。mouse-2既にバインドされているもののコードをコピーしてdired-mouse-find-file-other-window、の出現をfind-file-other-windowに変更できますfind-file。次に、コマンドをのmouse-2代わりににバインドしますdired-mouse-find-file-other-window

ここで行った唯一の変更は、(1)コマンドの名前と(2)のfind-file-other-window代わりですfind-file

(defun dired-mouse-find-file (event)
  "In Dired, visit the file or directory name you click on."
  (interactive "e")
  (let (window pos file)
    (save-excursion
      (setq window (posn-window (event-end event))
            pos (posn-point (event-end event)))
      (if (not (windowp window))
          (error "No file chosen"))
      (set-buffer (window-buffer window))
      (goto-char pos)
      (setq file (dired-get-file-for-visit)))
    (if (file-directory-p file)
        (or (and (cdr dired-subdir-alist)
                 (dired-goto-subdir file))
            (progn
              (select-window window)
              (dired-other-window file)))
      (select-window window)
      (find-file (file-name-sans-versions file t)))))

(define-key dired-mode-map [mouse-2] 'dired-mouse-find-file)

また、Diredバッファも置き換える(kill)場合は、のfind-alternate-file代わりに使用しますfind-file


このコードを.emacsファイルに追加できますか?それはうまくいきませんでした。
ジム、

@ジムすべての理由をカバーするために、その後emacsを再起動しましたか?はいの場合で、それでも機能しない場合C-h cは、* Dired *バッファーで中マウスボタンをクリックすると、何が表示されますか?mouse-2中クリックです。
Kaushal Modi、2015

Dunno- initファイルの内容がわかりません。emacs -Q;-)(initファイルなしで)試してください。それが機能する場合(私にとっては機能します)、再帰的にinitファイルを二分して、何が干渉しているのかを見つけます。emacs -Qどちらからも機能しない場合は、Emacsのバージョンである可能性があります-何がM-x emacs-versionわかりますか?
2015年

@kaushalmodi-emacsを再設定しました。Ch c <mouse-2> = "...その場所でコマンドdired-mouse-find-file-ot.her-windowを実行します。" つまり、キーバインディングが認識されていないということです。
ジム

@ジム私はそう思った.. (require 'dired)ドリューが投稿したコードの冒頭に必ず入れてください。ファイルを保存して実行し、実行内容M-x eval-bufferを確認C-h c <mouse-2>します..
Kaushal Modi '21

2

Drewの答えは正しくありません。ディレクトリでは機能せず、ファイルでのみ機能します。私は他の方法が良いと思います(同じウィンドウでdirを開いて、他のウィンドウでファイルを開く)。

同じウィンドウでファイルを開く場合も、find-file-other-windowをfind-fileに変更します。

作業コード:

(require 'dired)
(defun dired-mouse-find-file (event)
  "In Dired, visit the file or directory name you click on."
  (interactive "e")
  (let (window pos file)
    (save-excursion
      (setq window (posn-window (event-end event))
            pos (posn-point (event-end event)))
      (if (not (windowp window))
          (error "No file chosen"))
      (set-buffer (window-buffer window))
      (goto-char pos)
      (setq file (dired-get-file-for-visit)))
    (if (file-directory-p file)
        (or (and (cdr dired-subdir-alist)
                 (dired-goto-subdir file))
            (progn
              (select-window window)
              (dired file)))
      (select-window window)
      (find-file-other-window (file-name-sans-versions file t)))))

(define-key dired-mode-map [mouse-2] 'dired-mouse-find-file)

1.問題は、ディレクトリではなくファイルを開くことでした。2. 同じウィンドウでディレクトリを開きたい場合は、のfind-alternate-file代わりにを使用すると述べましたfind-file。3. OP 、ファイル(またはdir)を別のウィンドウで開きたくない。あなたはその振る舞いを好むかもしれませんが、それはOPに応答しません。
Drew

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.