2010-09-22 13 views
3

J'utilise Carbon Emacs 23 et j'essaie d'obtenir une certaine valeur de la largeur du cadre après le basculement d'une image plein écran (définie par une fonction). En fait, la chose étrange est que non seulement la largeur n'est pas définie, mais si vous basculez hors du plein écran à plusieurs reprises, le cadre devient de plus en plus petit, comme une fenêtre qui disparaît. Apprécier toutes les idées, j'ai essayé quelques uns différents. Voici le code:Réglage de la taille d'image dans Emacs pour passer en mode plein écran

(defun set-frame-size-according-to-resolution()                          
    (interactive)                                  
    (if window-system                                 
     (progn                                    
     ;; use 120 char wide window for largeish displays                         
     ;; and smaller 80 column windows for smaller displays                        
     ;; pick whatever numbers make sense for you                          
     (if (> (x-display-pixel-width) 1280)                            
      (add-to-list 'default-frame-alist (cons 'width 140))                       
      (add-to-list 'default-frame-alist (cons 'width 100)))                       
     ;; for the height, subtract a couple hundred pixels                        
     ;; from the screen height (for panels, menubars and                        
     ;; whatnot), then divide by the height of a char to                        
     ;; get the height we want                               
     (add-to-list 'default-frame-alist                             
        (cons 'height (/ (- (x-display-pixel-height) 200) (frame-char-height)))))))               


;;; This used to be in Carbon Emacs, puttin' it back in with my own twist 
(defun mac-toggle-max-window() 
    (interactive) 
    (set-frame-parameter nil 'fullscreen 
         (if (frame-parameter nil 'fullscreen) 
          (progn 
          (scroll-bar-mode 1) ;; turn on scrollbars when not in fullscreen mode 
          (set-frame-size-according-to-resolution) 
          nil) 
         (progn 
          (scroll-bar-mode -1) ;; turn off scrollbars when in fullscreen mode 
          'fullboth)))) 

;;; Toggle full screen via CMD-Return (my meta key is mapped to command on OS X 
(define-key global-map [(meta return)] 
    'mac-toggle-max-window) 

Répondre

2

Peu importe, je l'ai compris quelques minutes plus tard.

Voici la réponse:

;;; Set frame width - used on toggle out of fullscreen mode 
(defun default-frame-width() 
    "Set width of selected frame." 
    (modify-frame-parameters 
    (selected-frame) 
    (list (cons 'width 140)))) 

;;; This used to be in Carbon Emacs, puttin' it back in with my own twist 
(defun mac-toggle-max-window() 
    (interactive) 
    (set-frame-parameter nil 'fullscreen 
         (if (frame-parameter nil 'fullscreen) 
          (progn 
          (scroll-bar-mode 1) ;; turn on scrollbars when not in fullscreen mode 
          (default-frame-width) 
          nil) 
         (progn 
          (scroll-bar-mode -1) ;; turn off scrollbars when in fullscreen mode 
          'fullboth)))) 

;;; Toggle full screen via CMD-Return (my meta key is mapped to command on OS X 
(define-key global-map [(meta return)] 
    'mac-toggle-max-window)