2012-02-12 24 views
12

Tôi đang sử dụng các emacs mac từ http://emacsformacosx.com/ và tôi cần nhấp vào biểu tượng phóng to khi tôi bắt đầu các emacs của mình.Làm thế nào để chuyển đổi toàn màn hình với Emacs như mặc định?

Làm cách nào tôi có thể đặt cửa sổ emac được tối đa hóa làm mặc định?

+1

Bạn đã thử tìm kiếm trên Emacs Wiki, ví dụ: http://www.emacswiki.org/emacs/FullScreen#toc18 và http://www.emacswiki.org/emacs/EmacsForMacOS#toc27? Họ có thể hoặc có thể không được ra khỏi ngày, tôi không có một máy Mac vì vậy tôi không thể kiểm tra này. –

+0

Tôi đã gặp rắc rối đáng kể với bản phân phối Emacs có sẵn từ emacsforosx.com; hôm nay tôi đã xây dựng một Emacs mới từ [phiên bản này đã được vá hoàn toàn cho OS X] (https://github.com/railwaycat/emacs-mac-port) và đã tìm thấy kết quả tốt hơn nhiều, bao gồm cả hỗ trợ toàn màn hình OS X thích hợp. Hi vọng điêu nay co ich! –

+0

@Eric Fail - Vấn đề với việc thêm thẻ OSX là những người đó không biết gì về Emac và có khuynh hướng bỏ phiếu và bỏ phiếu để đóng vì họ là đối tượng mục tiêu sai. – lawlist

Trả lời

8

Ryan McGeary's maxframe.el hoạt động tốt cho tôi trên cả Aquamac và Emacs.app. Tôi tìm thấy nó qua EmacsWiki: http://www.emacswiki.org/emacs/FullScreen. Trang đó nói về một phiên bản được vá hiện là trang 404, nhưng phiên bản gốc tại https://github.com/rmm5t/maxframe.el dường như hoạt động tốt.

+0

Bạn có thực sự nhận được ** phạm vi phủ sóng tối đa ** đầy đủ như bạn làm cho một cửa sổ không phải emacs không. Tôi chỉ nhận được cửa sổ mở rộng lên đến bội số của độ rộng toàn ký tự và chiều cao của phông chữ không gian mặc định của tôi. Trên hệ thống của tôi (Ubuntu/GNU Emacs 23.1.1), điều này để lại một nửa biên giới rộng ký tự trên RHS và Bottom .. Cách duy nhất tôi có thể mở rộng toàn bộ cửa sổ là thông qua tùy chọn tối đa của menu hệ thống của trình quản lý cửa sổ (trong góc trên cùng bên trái) –

+0

PS: Tôi tìm thấy một câu trả lời SO khác có phương pháp hoạt động cho hệ thống Linux X-Windows của tôi: [tối đa hóa các emacs khi khởi động? (không phải toàn màn hình)] (http://stackoverflow.com/a/ 7763907/313821) .... ** Hủy bỏ !! **, nó không hoạt động .. nó tối đa hóa dọc quá nhiều ... * Nhưng *, hai phương pháp với nhau ** làm việc ** (lạ ... có lẽ một ngày nào đó tôi sẽ tìm ra lý do tại sao ... nhưng bây giờ nó hoạt động (sau khi nó làm tôi thất vọng! ... Cảm ơn đề xuất tối đa Jon O. –

+1

Bạn có thể nhận được khung hình tối đa thông qua trình quản lý gói emacs và Melpa cũng vậy –

9

bắt đầu emacs như thế này

emacs -mm 
7

Đây là một chức năng bằng văn bản và được sử dụng bởi tôi. Khi bạn succesivelly nhấn F11, Emacs công tắc ở 4 chế độ:

(defun switch-fullscreen nil 
    (interactive) 
    (let* ((modes '(nil fullboth fullwidth fullheight)) 
     (cm (cdr (assoc 'fullscreen (frame-parameters)))) 
     (next (cadr (member cm modes)))) 
    (modify-frame-parameters 
    (selected-frame) 
    (list (cons 'fullscreen next))))) 

(define-key global-map [f11] 'switch-fullscreen) 
+0

Điều này làm việc tốt cho tôi, ngoại trừ một chút phiền toái. Khi tôi đạt đến chế độ 'fullboth', khung hình sẽ vượt qua mọi thứ trên màn hình; nghĩa là thanh tiêu đề cửa sổ WM biến mất và bảng XFCE của tôi cũng biến mất sau cửa sổ (tôi đang sử dụng Xubuntu). Chế độ 'fullheight' hoạt động chính xác: khung chỉ sử dụng không gian dọc mà bảng điều khiển XFCE để sẵn cho nó.Tôi muốn chế độ 'fullboth' hoạt động như thể tôi đã phóng to cửa sổ WM bằng cách nhấn nút' + 'trên thanh tiêu đề. Bất kỳ ý tưởng làm thế nào mà có thể được thực hiện? –

+0

đây là lỗi trong gtk, không phải trong các emacs. vui lòng báo cáo cho nhà phát triển gtk. – alinsoar

+0

'fullboth' là từ sai. Nó làm cho Emacs đi toàn màn hình trong bình thường Mac chơi lô tô. 'maximized' làm cho nó đầy đủ! – trss

1

Câu trả lời được đưa ra tại https://stackoverflow.com/a/1029065/351716 công trình đối với tôi (với GNU Emacs v24.2.1). Để lấy lại, hãy xác định hàm sau trong tệp .emacs của bạn:

(defun x11-maximize-frame() 
    "Maximize the current frame (to full screen)" 
    (interactive) 
    (x-send-client-message nil 0 nil "_NET_WM_STATE" 32 '(2 "_NET_WM_STATE_MAXIMIZED_HORZ" 0)) 
    (x-send-client-message nil 0 nil "_NET_WM_STATE" 32 '(2 "_NET_WM_STATE_MAXIMIZED_VERT" 0))) 

Để thuận tiện, bạn có thể liên kết lệnh với khóa. Tôi sử dụng C-z quan trọng, mà nếu không sẽ hạn chế tối đa các khung hình, mà tôi không có nhu cầu, nhưng luôn luôn tìm thấy khó chịu khi tôi nhấn nó vô tình:

(global-set-key (kbd "C-z") 'x11-maximize-frame) 

Như tôi đã nêu trong bình luận tôi thêm vào câu trả lời rằng, sử dụng Lệnh này lặp đi lặp lại giữa trạng thái khung bình thường và trạng thái cực đại, nhưng một chút phiền toái: ở giữa hai trạng thái này, có một trạng thái lạ khi khung hình gần như nhưng không được phóng to theo chiều dọc. Nhưng đó là một vấn đề nhỏ.

5

Câu trả lời ngắn gọn là để thêm phần sau đây để bạn custom-set-variables: -

(custom-set-variables 
;; custom-set-variables was added by Custom. 
;; If you edit it by hand, you could mess it up, so be careful. 
;; Your init file should contain only one such instance. 
;; If there is more than one, they won't work right. 
... 
'(initial-frame-alist (quote ((fullscreen . maximized)))) 
... 
) 

Đưa ra dưới đây là những gì tôi muốn như một giải pháp cho vấn đề tương tự. TL; DR.

Tôi phải đối mặt với cùng một vấn đề nhưng trong tất cả các ứng dụng và không chỉ trong Emacs. Để kết thúc này, tôi đã giới hạn toàn cầu phím tắt cmd-m trên máy Mac của tôi vào tùy chọn menu Thu phóng, thường là tùy chọn trình đơn cho nút tối đa hóa màu xanh lá cây. Tuy nhiên, Emacs không cung cấp tùy chọn menu Zoom thường nằm trong mục menu Window. Vì vậy, tôi đã kết thúc với những điều sau đây.

Tôi vừa mã hóa tối hôm sau.

;; This defines cmd-m to do the same as clicking the green titlebar button 
;; usually meant for the "Window -> Zoom" menu option in Mac apps 
(defun zoom() "zoom, same as clicking the green titlebar button in Mac app windows" 
    (interactive) 
    (set-frame-parameter 
    nil 'fullscreen 
    (pcase (frame-parameter nil 'fullscreen) 
    (`nil 'fullheight) 
    (`fullheight 'maximized) 
    (`fullboth (ding) 'fullboth) 
    (`fullscreen (ding) 'fullscreen) 
    (_ nil)))) 
(global-set-key (kbd "s-m") 'zoom) 

Phím tắt này ở dòng cuối cùng của mã cũng khớp với khóa toàn cầu của tôi với Mac cmd + m mà tôi mô tả ban đầu. Bạn có thể tùy chỉnh nó cho phù hợp với bạn. Tôi đã quen với việc nhấn cmd-m khi khởi chạy hầu hết các ứng dụng cho đến khi nó vừa với màn hình và Emacs là một trong số chúng cho tôi. Vì vậy, tôi không bận tâm với cài đặt initial-frame-alist.

Tôi tiếp tục hoàn thành tính năng mà tôi muốn bằng cách thêm mã sau vào tối nay.

;; This defines ctrl-cmd-f to do the same as clicking the toggle-fullscreen titlebar 
;; icon usually meant for the "View -> Enter/Exit Full Screen" menu option in 
;; Mac apps 
(defun toggle-fullscreen() "toggle-fullscreen, same as clicking the 
corresponding titlebar icon in the right hand corner of Mac app windows" 
    (interactive) 
    (set-frame-parameter 
    nil 'fullscreen 
    (pcase (frame-parameter nil 'fullscreen) 
    (`fullboth nil) 
    (`fullscreen nil) 
    (_ 'fullscreen)))) 
(global-set-key (kbd "C-s-f") 'toggle-fullscreen) 
; For some weird reason C-s-f only means right cmd key! 
(global-set-key (kbd "<C-s-268632070>") 'toggle-fullscreen) 

Một vài lưu ý: -

  1. Nếu bạn chỉ học tập để sử dụng pcase từ mã này, hãy cẩn thận để không mắc phải sai lầm giống như tôi đã làm bằng cách hiểu sai backquote như một trích dẫn trong tài liệu.
  2. fullscreen là một bí danh để fullboth và không phải là một cái tên nhầm lẫn như sau này là như một thuật ngữ cho những gì nó có nghĩa và vì thế tôi đã không chỉ xử lý trường hợp đó là một giá trị cho (frame-parameter nil 'fullscreen) nhưng sử dụng bất cứ khi nào tôi muốn set-frame-parameter để fullboth

HTH

Các vấn đề liên quan