* সংকলন * উইন্ডোটি লুকান


20

সংকলন উইন্ডোটি সফল হওয়ার সাথে দেখা দেখতে পারা বিরক্তিকর। কিভাবে স্বয়ংক্রিয়ভাবে এটি অপসারণ?

এটি সফল না হলেও এটি দেখতে চাই।

উত্তর:


11

বছর আগে #emacs আইআরসি চ্যানেলে আমি এই বিট কোডটি পেয়েছি আমি চিরকাল ব্যবহার করছি। "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

কৃতিত্বটি মূল লেখক জপকোটার হাতে । এখানে তার উত্তর:

সংকলনের জন্য আমি নিম্নলিখিতটি ব্যবহার করি। সতর্কতা বা ত্রুটি থাকলে এটি সংকলন বাফার রাখে এবং অন্যথায় (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))))))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.