मैं एक समझदार विभाजन-खिड़की नीति कैसे प्राप्त कर सकता हूं?


15

Emacs लगातार नई खिड़कियां बना रहा है और यह हाल ही में मेरे दिन को बर्बाद कर रहा है। मैं विंडोज़ बनाने के दौरान एमएसीएस को निम्नलिखित नीति का उपयोग करने के लिए कैसे कह सकता हूं?

  • ऊर्ध्वाधर विभाजन को प्राथमिकता दें
  • ऊर्ध्वाधर विभाजन करना बंद करें जब खिड़कियां 80 स्तंभों से कम होंगी।
  • क्षैतिज विभाजन करना बंद करें जब खिड़की 60 पंक्तियों से कम होगी।
  • जब मैं इस 6x6 ग्रिड पर पहुंचता हूं, तो मेरे 27 "मॉनिटर पर, खिड़कियों का पुन: उपयोग करना शुरू करें!

इसके अलावा, मैं अपनी खिड़कियों को हमेशा संतुलित रखना पसंद करूंगा, लेकिन हर विभाजन विधवा आकारों को असंतुलित करता है। मैं नहीं बल्कि 1 बड़े और 3 छोटे आकार के हैं जो बहुत छोटे हैं! क्या इसके लिए एक सेटिंग है, या एक समझदार जगह पर एक संतुलन-विंडोज़ सलाह देने के लिए?


स्प्लिट विंडो बनाने के लिए कौन से ऑपरेशन बन रहे हैं?
एंड्रयू स्वान

मैं ज्यादातर क्लोजर प्रोग्रामिंग हाल ही में कर रहा हूं ताकि साइडर कमांड जैसे: साइडर-टेस्ट-रन-टेस्ट, साइडर-
फाइंड

1
अधिकांश लोग स्रोत कोड खोलने में रुचि नहीं रखते हैं - उदाहरण के लिए, साइडर -स्टफ - अपनी आवश्यकताओं के अनुरूप इसे अनुकूलित करने के लिए। इसके बजाय, वे सरल सुधारों की तलाश करते हैं जैसे कि अनुकूलित करना display-buffer-alist। अन्य लोग केवल प्रोग्राम के बाद इसे ठीक करते हैं - उदाहरण के लिए, delete-windowऔर switch-to-buffer, विभाजित-लंबवत / क्षैतिज रूप से, और इसके आगे। और, कुछ अतिरिक्त पुस्तकालय हैं जो खिड़कियों को प्रबंधित करने और / या पूर्व लेआउट में वापस लौटने में मदद करते हैं। मैं पहला विकल्प पसंद करता हूं - यानी, स्रोत को संशोधित करें और इसे बिल्कुल सही बनाएं, लेकिन मैं लोगों के दुर्लभ अल्पमत में हूं।
कानून व्यवस्था

5
विंडो-विभाजन के संबंध में अनुभाग पर एक नज़र डालें - split-height-thresholdऔर split-width-threshold- gnu.org/software/emacs/manual/html_node/emacs/…
लॉन

1
ऐसा लगता है कि आप एक बहुत ही सामान्य अवधारणा के साथ उपयोग करने के लिए एक कस्टम कार्रवाई फ़ंक्शन को परिभाषित करना चाहते हैं display-buffer-alistdisplay-bufferइस तरह के एक कार्य समारोह (और मानक कार्यों की सूची, जिस कोड की आप जांच कर सकते हैं) की आवश्यकताओं के लिए देखें , लेकिन यह बफर को प्रदर्शित करने के लिए ज़िम्मेदार होगा जो भी आप चाहते हैं (और निश्चित रूप से बाद में खिड़कियों को संतुलित कर सकते हैं) ।
फिल्स

जवाबों:


3

थोड़ी देर हो गई, लेकिन क्योंकि मैंने इसके लिए भी खोज की और एक तैयार समाधान नहीं खोज सका:

आप अपने स्वयं के split-window-sensiblyकार्य को परिभाषित कर सकते हैं ।
ऐसा करने के लिए, निम्नलिखित को अपने में रखें init.el:

(setq split-height-threshold 120
      split-width-threshold 160)

(defun my-split-window-sensibly (&optional window)
    "replacement `split-window-sensibly' function which prefers vertical splits"
    (interactive)
    (let ((window (or window (selected-window))))
        (or (and (window-splittable-p window t)
                 (with-selected-window window
                     (split-window-right)))
            (and (window-splittable-p window)
                 (with-selected-window window
                     (split-window-below))))))

(setq split-window-preferred-function #'my-split-window-sensibly)

नोट: थ्रेशोल्ड की अनुमति सबसे छोटी खिड़की से दोगुनी होनी चाहिए, क्योंकि नई खिड़कियां प्रत्येक पूर्व खिड़की के आकार के आधे हिस्से का उपयोग करती हैं।
अंतिम पंक्ति परिभाषित विभाजन फ़ंक्शन का उपयोग करने के लिए emacs बताती है।


2

मैं लंबे समय से निम्नलिखित का उपयोग कर रहा हूं। आपको अपनी पसंदीदा शैली को समायोजित करने के लिए इसे संपादित करने की आवश्यकता हो सकती है।

;; ------------------------------------------------------------------
;; display-buffer

;; The default behaviour of `display-buffer' is to always create a new
;; window. As I normally use a large display sporting a number of
;; side-by-side windows, this is a bit obnoxious.
;;
;; The code below will make Emacs reuse existing windows, with the
;; exception that if have a single window open in a large display, it
;; will be split horisontally.

(setq pop-up-windows nil)

(defun my-display-buffer-function (buf not-this-window)
  (if (and (not pop-up-frames)
           (one-window-p)
           (or not-this-window
               (not (eq (window-buffer (selected-window)) buf)))
           (> (frame-width) 162))
      (split-window-horizontally))
  ;; Note: Some modules sets `pop-up-windows' to t before calling
  ;; `display-buffer' -- Why, oh, why!
  (let ((display-buffer-function nil)
        (pop-up-windows nil))
    (display-buffer buf not-this-window)))

(setq display-buffer-function 'my-display-buffer-function)

0

यह आपको ऊर्ध्वाधर विभाजन पसंद करेगा

(setq split-width-threshold 1)

0

(setq split-height-threshold nil) (setq split-width-threshold 200)

  • स्थापना split-height-thresholdमूल रूप से कभी नहीं क्षैतिज विभाजित करने के लिए चाहते करने के लिए
  • 200 एक उच्च-पर्याप्त संख्या की तरह लगता है कि एक बड़े बाहरी डिस्प्ले पर भी Emacs केवल एक ही बार में विभाजित होंगे।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.