當我們在dired中使用或時,它會在「其他窗口」中打開文件。但是如果有多個其他窗口可見,則它會隨機選擇。有沒有辦法選擇打開該文件的窗口?從dired在特定窗口中打開文件
1
A
回答
0
我懷疑這種行爲是隨機的,但您可以通過掛鉤到display-buffer
並綁定您自己的命令來更改它。
請注意,大多數代碼是按區域排序窗口列表。
(defvar le::dired-chosen-window nil
"current chosen window to show buffers for `le::dired-choose-window-action'")
(defun le::window-list-for-completion()
"Return alist of (BUFFER-NAME . WINDOW) sorted by size,
suitable for completion."
;; Schwartzian transform
(mapcar
(lambda (cell)
(let ((window (car cell)))
(cons (concat
(when (and (boundp 'window-numbering-mode)
window-numbering-mode)
(format "%s: "
(window-numbering-get-number-string window)))
(buffer-name (window-buffer window)))
window)))
(sort (loop with boost-alist = (if (eq major-mode 'dired-mode)
(list (cons (selected-window) -1000000))
nil)
for window in (window-list nil 0 (window-at 0 0))
for index from 0
collect (cons window (+
(* (window-total-width window)
(window-total-height window)
100)
index
(let ((boost (assq window boost-alist)))
(if boost
(cdr boost)
0)))))
(lambda (a b)
(> (cdr a) (cdr b))))))
(defun le::dired-choose-window (window)
"Choose window to display buffer in.
Reset selection with universal prefix (C-u)."
(interactive (let ((completions (le::window-list-for-completion)))
(list (unless current-prefix-arg
(cdr (assoc (completing-read "window holding buffer: " completions) completions))))))
(setq le::dired-chosen-window window))
(defun le::dired-choose-window-action (buffer alist)
"action to display buffer in `le::dired-chosen-window'"
(window--display-buffer buffer le::dired-chosen-window 'reuse))
(defun le::dired-find-file-specified-window()
"Dired command to display buffer in chosen window"
(interactive)
(let ((display-buffer-overriding-action '((le::dired-choose-window-action))))
(dired-find-file-other-window)))
(define-key dired-mode-map [remap dired-find-file-other-window] 'le::dired-find-file-specified-window)
- 評估緩衝區。
- 選擇與
le::dired-choose-window-action
- 按Ø從dired在選擇窗口中打開文件的窗口。
+0
耶它實際上在打開的窗口中以循環方式打開。我會嘗試你的作品,並讓你知道如果這是我想要的。謝謝 ! – navderm 2013-03-18 18:08:36
1
我也很害怕dired的這種行爲。我喜歡的方式ace-window讓您輕鬆選擇只有一個鍵擊窗,所以寫的,它可以讓我用它來從我選擇的窗口dired打開文件的函數:
(require 'ace-window)
(defun find-file-ace-window()
"Use ace window to select a window for opening a file from dired."
(interactive)
(let ((file (dired-get-file-for-visit)))
(if (> (length (aw-window-list)) 1)
(aw-select "" (lambda (window)
(aw-switch-to-window window)
(find-file file)))
(find-file-other-window file))))
要更換dired標準find-file-other-window
命令添加
(define-key dired-mode-map "o" 'find-file-ace-window)
相關問題
- 1. Dired - 在另一個Emacs窗口中打開文件
- 2. 如何在現有vim窗口的特定行打開文件?
- 3. jquery模態窗口並在新窗口中打開pdf文件
- 4. 如何在NetBeans PLATFORM中打開「打開文件...」窗口?
- 5. 打開的文件已經在窗口瀏覽器中打開
- 6. 從MDI中打開另一個孩子的窗口在MDI中打開窗口
- 7. 在emacs的指定窗口中打開文件
- 8. 從其他swf打開.swf文件在新窗口中
- 9. 在特定單詞中懸停時打開彈出窗口
- 10. 使用Matlab在特定座標中打開窗口?
- 11. 從特定文件打開圖像?
- 12. 在窗口中打開IMS
- 13. 在XUL中打開窗口
- 14. 在打開的窗口中
- 15. 從xaml打開的窗口
- 16. RadWindow:從C#打開窗口#
- 17. 從iframe打開窗口
- 18. UWP:打開特定文件
- 19. AVI文件無法打開窗口
- 20. 窗口打開
- 21. ASP.NET控件在同一窗口中打開新的窗口intead
- 22. Emacs中dired模式的專用窗口?
- 23. 在模態窗口中打開xdsoft_datetimepicker在視口下面打開
- 24. 在後臺打開特定的窗口句柄
- 25. 打開窗口並加載emacs lisp中的特定緩衝區
- 26. 批處理:在特定程序中打開特定文件?
- 27. 如何在新窗口中打開pdf文件中的鏈接?
- 28. 在Visual Studio 2013中的兩個窗口中打開.aspx文件
- 29. 如何從批處理文件打開Power Shell窗口到新窗口
- 30. 可能打開iPhone Safari並鎖定特定窗口?
請看下面的例子來顯示的緩衝液(來自dired模式打開)上方,下方,左側或右側:https://emacs.stackexchange.com/a/15118/2287 – lawlist 2017-12-03 23:20:05