В Emacs, как я могу открыть буфер / файл в «режиме ibuffer / dired» в другом фрейме? - PullRequest
3 голосов
/ 21 декабря 2011

Когда я работаю с несколькими кадрами, я хочу решить, в каком кадре Emacs должен открывать файлы / буферы.

Ответы [ 3 ]

2 голосов
/ 21 декабря 2011

Вы не можете сделать это из коробки.

Есть find-buffer-other-frame и т.п., но они открывают новую рамку.

Что вы можете сделать, так это написать свою собственную функцию:

(defun find-file-in-frame ()
  (interactive)
  (call-interactively 'select-frame-by-name)
  (call-interactively 'find-file))

Это переключает фрейм, и затем запрашивает файл, если вы хотите сделать это в противном случае, вам нужно сделать больше работы.

Редактировать: здесь версия, которая запрашивает текущий кадр и открывает файл в другом окне:

(defun find-file-in-frame (noselect)
  (interactive "P")
  (let ((current-frame (selected-frame))
        (frame (completing-read "Frame: " (make-frame-names-alist)))
        (buffer (save-window-excursion
                  (call-interactively 'find-file))))
    (select-frame-set-input-focus (assoc-default frame
                                                 (make-frame-names-alist)
                                                 nil current-frame))
    (switch-to-buffer buffer)
    (when noselect
      (select-frame-set-input-focus current-frame))))
0 голосов
/ 22 декабря 2011

Не уверен, что вы действительно спрашиваете. Но что касается открытия файла из Dired в другом кадре, просто используйте C-o или M-mouse-2 в Dired + . Они связаны с этими командами, если вы по какой-то причине не хотите загружать Dired + :

    (defun diredp-find-file-other-frame ()  ; Bound to `C-o'
      "In Dired, visit this file or directory in another frame."
      (interactive)
      (find-file-other-frame (file-name-sans-versions (dired-get-filename nil t) t)))

    (defun diredp-mouse-find-file-other-frame (event) ; Bound to `M-mouse-2'
      "In Dired, visit file or directory clicked on in another frame."
      (interactive "e")
      (let ((pop-up-frames  t)) (dired-mouse-find-file-other-window event)))

0 голосов
/ 21 декабря 2011

Если вы просто ссылаетесь на find-file, то я бы предложил, чтобы при комбинации windmove и framemove переключение на фрейм, в котором вы хотите открыть файл, было бы такимтривиально и быстро, что вам, вероятно, не нужно ничего более причудливого.

OTOH, если вы хотите иметь возможность выбирать фрейм всякий раз, когда файл должен быть открыт любым способом, это, очевидно, неприменимо.

...