]> git.eshelyaron.com Git - emacs.git/commitdiff
Allow user control of progress messages in cpp.el
authorHong Xu <hong@topbug.net>
Fri, 25 Nov 2016 10:51:22 +0000 (12:51 +0200)
committerEli Zaretskii <eliz@gnu.org>
Fri, 25 Nov 2016 10:51:22 +0000 (12:51 +0200)
* progmodes/cpp.el (cpp-message-min-time-interval): New defcustom.
(cpp-progress-time): Use 'cpp-message-min-time-interval'.  Improve
the doc string.
(cpp-highlight-buffer): Use 'cpp-progress-message' instead of
'message' to print messages.  (Bug#24861)

Copyright-paperwork-exempt: yes

lisp/progmodes/cpp.el

index 7d641ab47f09da125d1d2c31d6f0c0b33eaef9aa..18b0704d6bed08bf78f8ffe15d508980b7ca1f68 100644 (file)
@@ -104,6 +104,13 @@ Each entry is a list with the following elements:
                               (const :tag "Both branches writable" both))))
   :group 'cpp)
 
+(defcustom cpp-message-min-time-interval 1.0
+  "Minimum time interval in seconds for `cpp-progress-message' messages.
+If nil, `cpp-progress-message' prints no progress messages."
+  :type 'float
+  :group 'cpp
+  :version "26.1")
+
 (defvar cpp-overlay-list nil)
 ;; List of cpp overlays active in the current buffer.
 (make-variable-buffer-local 'cpp-overlay-list)
@@ -278,7 +285,7 @@ A prefix arg suppresses display of that buffer."
                          (cpp-parse-close from to))
                         (t
                          (cpp-parse-error "Parser error"))))))))
-      (message "Parsing...done"))
+      (cpp-progress-message "Parsing...done"))
     (if cpp-state-stack
       (save-excursion
        (goto-char (nth 3 (car cpp-state-stack)))
@@ -819,16 +826,21 @@ BRANCH should be either nil (false branch), t (true branch) or `both'."
 
 ;;; Utilities:
 
-(defvar cpp-progress-time 0)
-;; Last time we issued a progress message.
+(defvar cpp-progress-time 0
+  "Last time `cpp-progress-message' issued a progress message.")
 
 (defun cpp-progress-message (&rest args)
-  ;; Report progress at most once a second.  Take same ARGS as `message'.
-  (let ((time (nth 1 (current-time))))
-    (if (= time cpp-progress-time)
-       ()
-      (setq cpp-progress-time time)
-      (apply 'message args))))
+  "Report progress by printing messages used by \"cpp-\" functions.
+
+Print messages at most once every `cpp-message-min-time-interval' seconds.
+If that option is nil, don't prints messages.
+ARGS are the same as for `message'."
+  (when cpp-message-min-time-interval
+    (let ((time (current-time)))
+      (when (>= (float-time (time-subtract time cpp-progress-time))
+                cpp-message-min-time-interval)
+        (setq cpp-progress-time time)
+        (apply 'message args)))))
 
 (provide 'cpp)