छिपाना * संकलन * खिड़की


20

यह सफल होने पर संकलन विंडो को प्रदर्शित करने के लिए कष्टप्रद है। स्वचालित रूप से कैसे निकालें?

मैं इसे देखना चाहता हूं, हालांकि यह सफल नहीं है।

जवाबों:


11

वर्षों पहले #emacs IRC चैनल पर मुझे यह कोड मिला जो मैं हमेशा से उपयोग कर रहा हूं। मान "2 सेकंड" सफल संकलन विंडो के दृश्यमान रहने की मात्रा निर्धारित करता है।

; from enberg on #emacs
(setq compilation-finish-function
  (lambda (buf str)
    (if (null (string-match ".*exited abnormally.*" str))
        ;;no errors, make the compilation window go away in a few seconds
        (progn
          (run-at-time
           "2 sec" nil 'delete-windows-on
           (get-buffer-create "*compilation*"))
          (message "No Compilation Errors!")))))

14

कोड (लाइब्रेरी में compile.el) को जल्दी से देखते हुए , आपको हुक पर एक फ़ंक्शन का उपयोग करके प्रदर्शित बफर को बस मारने या छिपाने में सक्षम होना चाहिए compilation-finish-functions। ऐसा करने के लिए, कुछ इस तरह का उपयोग करें:

 (add-hook 'compilation-finish-functions (lambda (buf strg) (kill-buffer buf))

यदि आप बफर को मारना नहीं चाहते हैं, तो कुछ इस तरह का उपयोग करें:

 (add-hook 'compilation-finish-functions
           (lambda (buf strg)
             (let ((win  (get-buffer-window buf 'visible)))
               (when win (delete-window win)))))

सामान्य तौर पर, आप कल्पना कर सकते हैं कि इस तरह की चीज के लिए संभवतः एक हुक पहले से ही प्रदान किया गया है, इसलिए आप आसानी से प्रसंस्करण में ऐसे महत्वपूर्ण स्थान पर कोड संलग्न कर सकते हैं। कोड का थोड़ा सा ब्राउज़िंग या उपयोग M-x aproposआमतौर पर जल्दी से आपको बता देगा। हुक के नाम आम तौर पर -hookया में समाप्त होते हैं -functions


2

यह धागा भी प्रासंगिक है, अगर किसी में दिलचस्पी है:

/programming/11043004/emacs-compile-buffer-auto-close

इसका श्रेय मूल लेखक jpkotta को जाता है । यहाँ उसका जवाब है:

मैं संकलन के लिए निम्नलिखित का उपयोग करता हूं। यह चेतावनी या त्रुटियों के होने पर संकलन बफ़र रखता है, और अन्यथा इसे (1 सेकंड के बाद) दफन कर देता है।

(defun bury-compile-buffer-if-successful (buffer string)
  "Bury a compilation buffer if succeeded without warnings "
  (if (and
       (string-match "compilation" (buffer-name buffer))
       (string-match "finished" string)
       (not
        (with-current-buffer buffer
          (search-forward "warning" nil t))))
      (run-with-timer 1 nil
                      (lambda (buf)
                        (bury-buffer buf)
                        (switch-to-prev-buffer (get-buffer-window buf) 'kill))
                      buffer)))
(add-hook 'compilation-finish-functions 'bury-compile-buffer-if-successful)

1
कृपया एक उत्तर पोस्ट न करें जिसमें सिर्फ एक लिंक हो । अपनी पोस्ट में उत्तर के आवश्यक भागों को शामिल करें, ताकि आपकी पोस्ट प्रश्न का उत्तर दे। लिंक को स्रोत के रूप में और अधिक जानकारी के लिए प्रदान करें। अधिक जानकारी के लिए, कृपया उत्तर लिखने पर हमारे दिशानिर्देश पढ़ें ।
गिल्स एसओ- बुराई को रोकना '

मेरे उत्तर को अपडेट किया।
स्वर्णेंदु विश्वास

ध्यान दें कि स्टैक एक्सचेंज से किसी और के जवाब को उद्धृत करना ठीक है , लेकिन आपको लेखक का नाम सहित उचित रोपण प्रदान करना होगा ।
गिल्स एसओ- बुराई को रोकें '

1

मेरे पास यह स्निपेट मेरे पास है .emacs.d:

    (defcustom compilation-auto-quit-window-delay 1
      "Time in seconds before auto closing the window."
      :group 'compilation
      :type 'number)  

    (defun compilation-auto-quit-window-finish-function (buffer status)
      "Quit the *compilation* window if it went well."
      (let ((window (get-buffer-window buffer)))
        (when (and (equal status "finished\n")
                   (compilation-went-super-p))
          (run-with-timer
              (or compilation-auto-quit-window-delay 0) nil
            (lambda nil
              (when (and (window-live-p window)
                         (eq (window-buffer window)
                             buffer)
                         (not (eq (selected-window)
                                  window)))
                (save-selected-window
                  (quit-window nil window))))))))

    (define-minor-mode compilation-auto-quit-window
      "Automatically close the *compilation* window if it went well."
      :global t
      (cond (compilation-auto-quit-window
             (add-hook 'compilation-finish-functions
                       'compilation-auto-quit-window-finish-function))
            (t
             (remove-hook 'compilation-finish-functions
                          'compilation-auto-quit-window-finish-function))))

    (defun compilation-went-super-p (&optional buffer)
      "Return t, if no gotoable output appeared."
      (with-current-buffer (or buffer (current-buffer))
        (save-excursion
          (goto-char (point-min))
          (let (;; (compilation-skip-threshold 1)
                )
            (not (ignore-errors
                   (compilation-next-error 1)
                   t))))))
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.