मैं Emacs की विंडो का आकार कैसे निर्धारित करूं?


103

मैं उस स्क्रीन के आकार का पता लगाने का प्रयास कर रहा हूं, जिस पर मैं emacs शुरू कर रहा हूं, और आकार और स्थिति को उस विंडो में समायोजित कर रहा हूं, जो (मुझे लगता है कि emacs- बोलने में फ्रेम है) तदनुसार। मैं अपना .emacs सेट करने का प्रयास कर रहा हूं ताकि मुझे हमेशा एक "यथोचित-बड़ी" विंडो मिले, जिसके साथ यह मेरी स्क्रीन के ऊपरी-बाएँ कोने के ऊपर-बाएँ कोने के साथ हो।

मुझे लगता है कि यह सामान्य मामले के लिए एक बड़ा प्रश्न है, इसलिए चीजों को थोड़ा कम करने के लिए मुझे विंडोज और जीएनयू एमएसीएस 22 में विंडोज और डेबियन पर सबसे ज्यादा दिलचस्पी है।

जवाबों:


89

यदि आप रिज़ॉल्यूशन के अनुसार आकार बदलना चाहते हैं तो आप ऐसा कुछ कर सकते हैं (अपनी विशिष्ट आवश्यकताओं के अनुसार पसंदीदा चौड़ाई और रिज़ॉल्यूशन को समायोजित करना):

(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 120))
           (add-to-list 'default-frame-alist (cons 'width 80)))
    ;; 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)))))))

(set-frame-size-according-to-resolution)

ध्यान दें कि विंडो-सिस्टम को emacs के नए संस्करणों में पदावनत किया गया है। एक उपयुक्त प्रतिस्थापन है (display-graphic-p)इस प्रश्न का उत्तर देखें कि कैसे पता लगाएं कि एमएसीएस टर्मिनल-मोड में है? थोड़ी और पृष्ठभूमि के लिए।


मुझे अलग-अलग संख्याएँ पसंद हैं, इसलिए (जैसा कि आप सुझाव देते हैं) मैंने अपना ट्वीक किया। यह महान काम करता है, हालांकि; धन्यवाद!
lindes

तो फिर, मैं वास्तव में इस संस्करण को बेहतर पसंद करता हूं - बहुत सरल (पढ़ने में आसान और ट्वीक), और मेरी आवश्यकताओं के अनुरूप है। दोनों अच्छे जवाब हैं, हालांकि! +1
lindes

1
कम से कम ऊंचाई पर सावधान रहें, कम से कम Emacs 24.2 पर OS X। यदि आप इसे एक पंक्ति बहुत ऊँचाई पर सेट करते हैं, तो विंडोज़ एक ऐसी स्थिति में अटक जाएगी जहाँ बफर की पहली पंक्ति दिखाई नहीं देती है - बिंदु वहाँ नेविगेट कर सकता है, लेकिन विंडो इसे दिखाने के लिए स्क्रॉल नहीं करेगी।
ग्रेग हेंडरशॉट

2
इस पद्धति के साथ एक छोटी सी कलाकृतियों है (और यहां सूचीबद्ध अन्य)। Emacs एक निश्चित आकार के साथ खुलेंगे और एक सेकंड के विभाजन के बाद हम सेट w / e आकार का आकार बदल देंगे। लेकिन संक्रमण दिख रहा है। क्या टी = 0 सेकंड से emacs को वांछित आकार में बताने का एक तरीका है?
स्टैटिस्क

48

मुझे अपने में निम्नलिखित मिला है .emacs:

(if (window-system)
  (set-frame-height (selected-frame) 60))

तुम भी समारोहों में लग सकता है set-frame-size, set-frame-positionऔर set-frame-width। विस्तृत दस्तावेज लाने के लिए C-h f(उर्फ M-x describe-function) का उपयोग करें ।

मुझे यकीन नहीं है कि वर्तमान विंडोिंग वातावरण में एक फ्रेम की अधिकतम ऊंचाई / चौड़ाई की गणना करने का एक तरीका है।


12
वाह! (if (window-system) (set-frame-size (selected-frame) 124 40))जीत के लिए - इतना अच्छा है और संक्षिप्त है, और मुझे आकार मेरे टर्मिनल चूक है, जो अच्छा और परिचित है। :) (वरीयताओं को समायोजित करें, निश्चित रूप से।) धन्यवाद!
lindes

1
बस स्पष्ट करने के लिए: यदि आप init.elइसे इसमें डालते हैं तो केवल प्रारंभिक फ्रेम पर लागू होता है। यदि आप उसके बाद एक नया फ्रेम बनाते हैं, तो उपरोक्त फ़ंक्शन का प्रभाव नहीं होगा; नए फ्रेम में सेटिंग सेट होगी default-frame-alist
डेविड जे।

यह मेरे लिए काम करता है सिवाय इसके कि (set-frame-size (selected-frame) 80 24)मुझे एक फ्रेम बाई 48 बाई 48; मैं एक 4K hidpi स्क्रीन पर हूँ, लेकिन मुझे उम्मीद नहीं है कि चरित्र मायने रखता है।
चार्लीग्रीन

21

से लिया गया: http://www.gnu.org/software/emacs/windows/old/faq4.html

(setq default-frame-alist
      '((top . 200) (left . 400)
        (width . 80) (height . 40)
        (cursor-color . "white")
        (cursor-type . box)
        (foreground-color . "yellow")
        (background-color . "black")
        (font . "-*-Courier-normal-r-*-*-13-*-*-*-c-*-iso8859-1")))

(setq initial-frame-alist '((top . 10) (left . 30)))

पहली सेटिंग सभी emacs फ़्रेमों पर लागू होती है, जिसमें पहला पॉप अप होता है जब आप शुरू करते हैं। दूसरी सेटिंग पहले फ्रेम में अतिरिक्त विशेषताएँ जोड़ती है। इसका कारण यह है कि मूल फ्रेम को जानना कभी-कभी अच्छा होता है, जिसमें आप एमएसीएस शुरू करते हैं।


फ्रेम की ऊंचाई और चौड़ाई ( (width . 80) (height . 40)) सेट करने के लिए मैंने लंबे समय तक उस पद्धति का उपयोग किया था , लेकिन किसी कारण से, मैंने अपने Xubuntu संस्करण को 12.04 से 13.10 तक उन्नत करने के बाद काम करना बंद कर दिया: लॉन्च होने पर, फ्रेम का आकार डिफ़ॉल्ट था। मैंने तब क्रिस कॉनवे के उत्तर का उपयोग करने के लिए स्विच किया, जो मेरे लिए काम करता है।
तेमू लीस्टी

17

सबसे आसान तरीका जो मैंने पाया है कि एक्स-विंडो वातावरण में एक्स संसाधनों के माध्यम से है । मेरे .Xdefaults का प्रासंगिक भाग इस तरह दिखता है:

Emacs.geometry: 80x70

आपको इसे + 0 + 0 स्थान के साथ प्रत्यय देने में सक्षम होना चाहिए ताकि यह आपके प्रदर्शन के ऊपरी-बाएँ कोने पर मजबूर हो सके। (इसका कारण यह नहीं है कि मैं नए फ्रेम को सहजता से देखता हूं, और यह चीजों को भ्रमित करता है अगर वे पिछले एक के समान स्थान पर दिखाई देते हैं)

मैनुअल के अनुसार, यह तकनीक एमएस विंडोज पर भी काम करती है , संसाधनों को रजिस्ट्री में कुंजी / मूल्य जोड़े के रूप में संग्रहीत करती है। मैंने कभी उसका परीक्षण नहीं किया। यह बहुत अच्छा हो सकता है, यह केवल एक फ़ाइल को संपादित करने की तुलना में बहुत अधिक असुविधा हो सकती है।


1
येप खिड़कियों के लिए भी काम करता है। Emacs wiki अधिक जानकारी देता है: emacswiki.org/emacs/MsWindowsRegistry
Sa'ad

17

निम्न कोड को जोड़ने का प्रयास करें .emacs

(add-to-list 'default-frame-alist '(height . 24))

(add-to-list 'default-frame-alist '(width . 80)) 

12

जब emacs -geometry 80x60+20+30आप emacs फायरिंग करते हैं, तो आप -geometry पैरामीटर भी कर सकते हैं: आपको एक विंडो 80 अक्षर चौड़ी, 60 पंक्तियाँ ऊँची, ऊपरी बाएँ कोने के 20 पिक्सेल दाईं ओर और 30 पिक्सेल पृष्ठभूमि के ऊपरी बाएँ कोने से नीचे आएंगे।


7

Ubuntu पर:

(defun toggle-fullscreen ()
  (interactive)
  (x-send-client-message nil 0 nil "_NET_WM_STATE" 32
                 '(2 "_NET_WM_STATE_MAXIMIZED_VERT" 0))
  (x-send-client-message nil 0 nil "_NET_WM_STATE" 32
                 '(2 "_NET_WM_STATE_MAXIMIZED_HORZ" 0))
)
(toggle-fullscreen)

5

खिड़कियों पर, आप इस फंक्शन का उपयोग करके अधिकतम फ़्रेम बना सकते हैं:

(defun w32-maximize-frame ()
  "Maximize the current frame"
  (interactive)
  (w32-send-sys-command 61488))

1
(setq initial-frame-alist
        (append '((width . 263) (height . 112) (top . -5) (left . 5) (font . "4.System VIO"))
                initial-frame-alist))

(setq default-frame-alist
        (append '((width . 263) (height . 112) (top . -5) (left . 5) (font . "4.System VIO"))
                default-frame-alist))

0
(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 120))
           (add-to-list 'default-frame-alist (cons 'width 80)))
    ;; 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)))))))

(set-frame-size-according-to-resolution)

मुझे ब्रायन ओकले की सेटिंग पसंद है। हालाँकि मेरे GNU Emacs 24.1.1 में 'ऊँचाई ठीक से काम नहीं करती है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.