Đôi khi tôi muốn hiển thị thông tin theo kiểu bộ đệm Trợ giúp, vì vậy tôi đã sử dụng mã như thế này:
(with-help-window (help-buffer)
(princ "Type q to exit this help buffer.\n\n")
(princ result))
Điều này hoạt động tốt, nhưng cửa sổ trợ giúp chỉ sử dụng một nửa khung hình của tôi. Tôi thường chia khung hình của mình theo chiều ngang, để cho hai cửa sổ cao. Bộ đệm trợ giúp được hiển thị sử dụng một trong hai cửa sổ.
Tôi thà sử dụng toàn bộ khung hình trong một số trường hợp, để hiển thị thêm thông tin và để giảm số lần tôi cần trang xuống thông qua thông tin được hiển thị. Vấn đề cần giải quyết là làm thế nào để sử dụng tạm thời toàn bộ khung cho with-help-window
cuộc gọi và tự động khôi phục bộ đệm / kích thước cửa sổ ban đầu khi tôi nhập "q" trong cửa sổ trợ giúp.
Làm thế nào tôi có thể đạt được mục tiêu này tốt nhất? Tôi nghĩ rằng tôi đang tìm kiếm một cái gì đó như thế này:
(with-FULL-FRAME-help-window (help-buffer)
...)
Tôi đã xem chế độ người chiến thắng, dấu trang, lưu bố cục vào sổ đăng ký, các phương thức khác nhau (và mạnh mẽ, nhưng phức tạp) (display-buffer ...)
. Hầu hết chúng có vẻ hơi ngoài mục tiêu mong muốn của tôi vì chúng có xu hướng sửa / khôi phục bố cục sau thao tác hiển thị toàn khung hình. Và dường như nhiều người trong số họ yêu cầu tôi phải tự khôi phục bố cục cửa sổ của mình (điều mà tôi không muốn làm).
Tôi tự hỏi nếu có ai đã nghe nói về một cách để giải quyết điều này một cách đơn giản. Tôi hy vọng một cái gì đó đơn giản như những cách tiếp cận có thể này, nơi tôi có thể ghi đè lên một cái gì đó bằng khung ...
(let ((help-window-width-display-option fullwidth))
(with-help-window (help-buffer)
...))
Hoặc cách tiếp cận này, mà tôi chưa biết cách thực hiện và có vẻ hơi khó / khó đối với trình độ kỹ năng hiện tại của tôi.
(let ((save original configuration somehow)
(delete-other-windows)
(with-help-window (help-buffer)
...)
;; somehow, when I type "q" in the help buffer
;; - catch that action in code after the buffer is killed
;; - and restore the original window configuration
)
Dường như với tôi, vấn đề chính cần giải quyết là làm thế nào để tự động khôi phục cấu hình cửa sổ ban đầu khi tôi gõ "q" trong bộ đệm chế độ trợ giúp tạm thời. Cảm ơn
display-buffer-pop-up-frame
, vì nó khá gần với những gì tôi tìm kiếm. Nhưng ... khung hình bật lên ở một nơi khác (không phải khung hiện tại của tôi) và tôi phải gửi nó bằng cmd-w, không phải "q" theo kiểu trợ giúp. Lưu / khôi phục cấu hình cửa sổ không phải là vấn đề cơ bản. Hiện tại tôi đang nghiêng về nhân bản và sửa đổi nguồn của cửa sổ trợ giúp để cung cấp cho nó một tùy chọn mà tôi có thể cho phép liên kết hoặc bọc bằng defmacro hoặc thứ gì đó. Tôi mỉm cười khi thấy chúng tôi kén chọn mọi người muốn chính xác những gì chúng tôi muốn từ Emacs.
help-return-method
, quit-window
thì quit-restore
tham số cửa sổ, và có lẽ một số mã tùy chỉnh để thiết lập / sử dụng tất cả những thứ đó để tạo hiệu ứng mong muốn.
display-buffer-pop-up-frame
: gnu.org/software/emacs/manual/html_node/elisp/. Một ý tưởng ý tưởng khác sẽ là phát hànhmake-frame
trong khi sử dụngdisplay-buffer
chức năng tùy chỉnh để nhắm mục tiêu khung mới đó. Nếu bạn quan tâm đến việc định vị và nhắm mục tiêu một khung hiện có, hãy xem ví dụ này: stackoverflow.com/questions/18346785/