all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Hong Xu <hong@topbug.net>
To: Eli Zaretskii <eliz@gnu.org>
Cc: 24861@debbugs.gnu.org
Subject: bug#24861: [PATCH] Fix annoying "Parsing...done" message in c++-mode
Date: Fri, 18 Nov 2016 11:55:28 -0800	[thread overview]
Message-ID: <c330f2c6-8845-0bc3-2005-532f549ad579@topbug.net> (raw)
In-Reply-To: <83zikxcejl.fsf@gnu.org>


[-- Attachment #1.1.1: Type: text/plain, Size: 1704 bytes --]

On 11/18/2016 01:39 AM, Eli Zaretskii wrote:
>> From: Hong Xu <hong@topbug.net>
>> Cc: 24861@debbugs.gnu.org
>> Date: Tue, 15 Nov 2016 16:03:19 -0800
>>
>> Can you still consider this patch?
> 
> I'm okay with accepting this for the master branch, but the patch
> needs some more work to fix the following issues:
> 
>  . The first line of each doc string should be a complete sentence.
>  . The doc string of cpp-progress-message should mention
>    cpp-message-min-time-interval.
>  . The defcustom you are adding should have a :version tag.
>  . The calculation in cpp-progress-message should be fixed to
>    calculate the time difference between the current time and the time
>    of the previous progress message, and compare that with the value
>    of cpp-message-min-time-interval.  The old code just looked at the
>    2nd member of the list returned by current-time, but that is no
>    longer TRT when you need to compare the time difference, because
>    that member can go back to zero.  You need to use time-subtract.
>  . Last, but not least: please include ChangeLog-style commit log
>    message for the changes.
> 

Allow users to customize the maximum frequency that
`cpp-progress-message' prints messages.

	* progmodes/cpp.el (cpp-message-min-time-interval)
	(cpp-progress-message): Add variable
	`cpp-message-min-time-interval' to indicate the minimum time
	interval in seconds that `cpp-progress-message' prints messages.

	* progmodes/cpp.el (cpp-progress-time): Initialize to '(0 0 0 0) instead of
	0 and improve the documentation.

	* progmodes/cpp.el (cpp-highlight-buffer): Use
	`cpp-progress-message' instead of `message'.


Thanks.

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.1.2: cpp-message.patch --]
[-- Type: text/x-patch; name="cpp-message.patch", Size: 2085 bytes --]

diff --git a/lisp/progmodes/cpp.el b/lisp/progmodes/cpp.el
index 7d641ab47f09..41b7fc968a2d 100644
--- a/lisp/progmodes/cpp.el
+++ b/lisp/progmodes/cpp.el
@@ -104,6 +104,14 @@ cpp-edit-list
 			       (const :tag "Both branches writable" both))))
   :group 'cpp)
 
+(defcustom cpp-message-min-time-interval 1.0
+  "Indicate the minimum time interval in seconds that
+`cpp-progress-message' should print messages.
+`cpp-progress-message' prints no message if it is set to nil."
+  :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 +286,7 @@ cpp-highlight-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 +827,21 @@ cpp-face-name
 
 ;;; Utilities:
 
-(defvar cpp-progress-time 0)
-;; Last time we issued a progress message.
+(defvar cpp-progress-time '(0 0 0 0)
+  "Indicate the 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 at most once every
+`cpp-message-min-time-interval' seconds for functions whose names
+start with \"cpp-\".  If `cpp-message-min-time-interval' is nil,
+it prints no message.  The ARGS are the same as in `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)
 

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

  reply	other threads:[~2016-11-18 19:55 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-02 18:45 bug#24861: [PATCH] Fix annoying "Parsing...done" message in c++-mode Hong Xu
2016-11-02 20:09 ` Hong Xu
2016-11-02 20:21   ` Eli Zaretskii
2016-11-02 23:34     ` Hong Xu
2016-11-03 18:15       ` Eli Zaretskii
2016-11-03 18:43         ` Hong Xu
2016-11-16  0:03           ` Hong Xu
2016-11-18  9:39             ` Eli Zaretskii
2016-11-18 19:55               ` Hong Xu [this message]
2016-11-19  7:50                 ` Eli Zaretskii
2016-11-20  0:20                   ` Hong Xu
2016-11-25 10:53                     ` Eli Zaretskii
2016-11-02 23:39     ` Hong Xu
2016-11-03 16:39     ` Richard Stallman
2016-11-02 22:05   ` Andreas Schwab

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=c330f2c6-8845-0bc3-2005-532f549ad579@topbug.net \
    --to=hong@topbug.net \
    --cc=24861@debbugs.gnu.org \
    --cc=eliz@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.