سؤال

أحاول اكتشاف حجم الشاشة التي أبدأ تشغيل emacs عليها، وضبط حجم وموضع النافذة التي تبدأ فيها (أعتقد أن هذا هو الإطار الذي يتحدث به emacs) وفقًا لذلك.أحاول إعداد .emacs الخاص بي حتى أحصل دائمًا على نافذة "كبيرة بشكل معقول" مع وجود الزاوية العلوية اليسرى بالقرب من الجزء العلوي الأيسر من شاشتي.

أعتقد أن هذا هو كبير اسأل عن الحالة العامة، لذا لتضييق نطاق الأمور قليلًا، أنا مهتم جدًا بـ GNU Emacs 22 على نظامي التشغيل Windows و(Debian) Linux.

هل كانت مفيدة؟

المحلول

إذا كنت تريد تغيير الحجم وفقًا للدقة، فيمكنك القيام بشيء من هذا القبيل (ضبط العرض ودرجات الدقة المفضلة وفقًا لاحتياجاتك المحددة):

(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).يرى هذه الإجابة للسؤال كيفية اكتشاف أن emacs في الوضع الطرفي؟ لمزيد من الخلفية قليلا.

نصائح أخرى

لقد حصلت على ما يلي في بلدي .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) لعرض وثائق مفصلة.

لست متأكدًا مما إذا كانت هناك طريقة لحساب الحد الأقصى للارتفاع/العرض للإطار في بيئة النوافذ الحالية.

مأخوذ من: 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 بما في ذلك الإطار الأول الذي ينبثق عند البدء.يضيف الإعداد الثاني سمات إضافية إلى الإطار الأول.هذا لأنه من الجيد أحيانًا معرفة الإطار الأصلي الذي تبدأ فيه emacs.

أسهل طريقة وجدتها للقيام بذلك في بيئة X-Window هي من خلال الموارد X.يبدو الجزء ذو الصلة من .Xdefaults كما يلي:

Emacs.geometry: 80x70

يجب أن تكون قادرًا على إضافة إحداثيات الموقع +0+0 لإجبارها على الظهور في الزاوية العلوية اليسرى من شاشتك.(السبب الذي يجعلني لا أفعل ذلك هو أنني أحيانًا أقوم بإنشاء إطارات جديدة، وهذا يجعل الأمور مربكة إذا ظهرت في نفس الموقع تمامًا مثل الموقع السابق)

وفقا للدليل، تعمل هذه التقنية على نظام التشغيل MS Windows أيضًا, وتخزين الموارد كأزواج مفتاح/قيمة في السجل.لم أختبر ذلك أبدًا.قد يكون الأمر رائعًا، وقد يكون أكثر إزعاجًا مقارنةً بمجرد تحرير ملف.

حاول إضافة الكود التالي إلى .emacs

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

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

يمكنك أيضًا استخدام المعلمة -geometry عند تشغيل emacs: emacs -geometry 80x60+20+30 سيعطيك نافذة بعرض 80 حرفًا، وارتفاع 60 صفًا، مع وجود الزاوية اليسرى العليا على بعد 20 بكسل إلى اليمين و30 بكسل لأسفل من الزاوية اليسرى العليا للخلفية.

على أوبونتو قم بما يلي:

(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)

على نظام التشغيل Windows، يمكنك تكبير إطار emacs باستخدام هذه الوظيفة:

(defun w32-maximize-frame ()
  "Maximize the current frame"
  (interactive)
  (w32-send-sys-command 61488))
(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))
(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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top