मेरा मानना है कि इस समस्या को हल करने के दो तरीके हैं।
पहले हुक ` 'संकलन-फ़िनिश-कार्यों' है, जो है उपयोग करने के लिए है:
कॉल करने के लिए जब एक संकलन प्रक्रिया खत्म unctions [च की सूची]। प्रत्येक फ़ंक्शन को दो तर्कों के साथ बुलाया जाता है: संकलन बफर, और एक स्ट्रिंग वर्णन करती है कि प्रक्रिया कैसे समाप्त हुई।
कौन इस तरह एक समाधान की ओर जाता है:
(add-hook 'compilation-finish-functions 'my-compilation-finish-function)
(defun my-compilation-finish-function (buffer resstring)
"Shrink the window if the process finished successfully."
(let ((compilation-window-height (if (string-match-p "finished" resstring) 5 nil)))
(compilation-set-window-height (get-buffer-window buffer 0))))
समस्या सिर्फ मुझे लगता है कि समाधान के साथ है यह मानता है कि है कि सफलता स्ट्रिंग खोजने के द्वारा निर्धारित किया जा सकता है परिणाम स्ट्रिंग में "समाप्त हो गया है।"
दूसरा विकल्प 'compilation-handle-exit
को सलाह देना है - स्पष्ट रूप से निकास-स्थिति को पारित कर देता है। मैंने यह सलाह लिखी है कि विंडो से बाहर निकलता है जब बाहर निकलने की स्थिति शून्य होती है।
(defadvice compilation-handle-exit (around my-compilation-handle-exit-shrink-height activate)
(let ((compilation-window-height (if (zerop (car (ad-get-args 1))) 5 nil)))
(compilation-set-window-height (get-buffer-window (current-buffer) 0))
ad-do-it))
नोट: यदि *compilation*
खिड़की अभी भी दिखाई दे रहा है, जब आप अपने दूसरे संकलन करते हैं, यह असफलता पर बड़ा फिर से नहीं लगाया जाएगा। यदि आप इसे आकार बदलना चाहते हैं, तो आपको nil
की बजाय ऊंचाई निर्दिष्ट करने की आवश्यकता होगी।
(if (string-match-p "finished" resstring) 5 (/ (frame-height) 2))
nil
(/ (frame-height) 2)
से बदला गया: शायद यह अपनी पसंद (पहला उदाहरण बदलते) होगा
स्रोत
2010-02-05 06:39:43