如何配置emacs拖放打开而不是追加到osx上

时间:2010-09-27 16:08:34

标签: emacs

如何在osx上配置emacs 23.1.1,以便emacs窗口上的文件拖放在新缓冲区中打开文件,而不是将其附加到当前缓冲区?

3 个答案:

答案 0 :(得分:4)

您可以尝试:

(global-set-key [ns-drag-file] 'ns-find-file)

它适用于Emacs 23.2.1

答案 1 :(得分:2)

我在.emacs中使用:

; Upon drag-and-drop: Find the file, w/shift insert filename; w/meta insert file contents
; note that the emacs window must be selected (CMD-TAB) for the modifiers to register
(define-key global-map [M-ns-drag-file] 'ns-insert-file)
(define-key global-map [S-ns-drag-file] 'ns-insert-filename)
(define-key global-map [ns-drag-file] 'ns-find-file-in-frame)

(defun ns-insert-filename ()
  "Insert contents of first element of `ns-input-file' at point."
  (interactive)
  (let ((f (pop ns-input-file)))
    (insert f))
  (if ns-input-file                     ; any more? Separate by " "
      (insert " ")))

(defun ns-find-file-in-frame ()
  "Do a `find-file' with the `ns-input-file' as argument; staying in frame."
  (interactive)
  (let ((ns-pop-up-frames nil))
    (ns-find-file)))

答案 2 :(得分:2)

我用:

(if (fboundp 'ns-find-file)
    (global-set-key [ns-drag-file] 'ns-find-file))

这(基本上与其他答案中给出的相同)确保创建新缓冲区。 if部分确保代码即使在非Mac环境中也能正常工作。

(setq ns-pop-up-frames nil)

这可确保新缓冲区显示在现有窗口中,从而不会打开新的Emacs框架。 (我在评论中注意到你遇到了麻烦。)