GNU bug report logs - #24861
[PATCH] Fix annoying "Parsing...done" message in c++-mode

Previous Next

Packages: emacs, cc-mode;

Reported by: Hong Xu <hong <at> topbug.net>

Date: Wed, 2 Nov 2016 18:46:01 UTC

Severity: wishlist

Tags: patch

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 24861 in the body.
You can then email your comments to 24861 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#24861; Package emacs. (Wed, 02 Nov 2016 18:46:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Hong Xu <hong <at> topbug.net>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Wed, 02 Nov 2016 18:46:01 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Hong Xu <hong <at> topbug.net>
To: bug-gnu-emacs <at> gnu.org
Subject: [PATCH] Fix annoying "Parsing...done" message in c++-mode
Date: Wed, 02 Nov 2016 11:45:25 -0700
[Message part 1 (text/plain, inline)]
This patch adds a customizable variable cpp-message-min-time-interval to
avoid over messaging.

[cpp-message.patch (text/x-diff, inline)]
diff --git a/lisp/progmodes/cpp.el b/lisp/progmodes/cpp.el
index 7d641ab47f09..1dd179d9103f 100644
--- a/lisp/progmodes/cpp.el
+++ b/lisp/progmodes/cpp.el
@@ -104,6 +104,12 @@ cpp-edit-list
 			       (const :tag "Both branches writable" both))))
   :group 'cpp)
 
+(defcustom cpp-message-min-time-interval 1
+  "The minimum time interval in seconds that cpp-mode should
+print messages.  No message will be printed if set to 0."
+  :type 'integer
+  :group 'cpp)
+
 (defvar cpp-overlay-list nil)
 ;; List of cpp overlays active in the current buffer.
 (make-variable-buffer-local 'cpp-overlay-list)
@@ -278,7 +284,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)))
@@ -823,10 +829,10 @@ cpp-progress-time
 ;; Last time we issued a progress message.
 
 (defun cpp-progress-message (&rest args)
-  ;; Report progress at most once a second.  Take same ARGS as `message'.
+  "Report progress at most once a second.  Take same ARGS as `message'."
   (let ((time (nth 1 (current-time))))
-    (if (= time cpp-progress-time)
-	()
+    (when (>= (- time cpp-progress-time)
+              cpp-message-min-time-interval)
       (setq cpp-progress-time time)
       (apply 'message args))))
 

Information forwarded to bug-gnu-emacs <at> gnu.org, bug-cc-mode <at> gnu.org:
bug#24861; Package emacs,cc-mode. (Wed, 02 Nov 2016 20:10:01 GMT) Full text and rfc822 format available.

Message #8 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Hong Xu <hong <at> topbug.net>
To: bug-gnu-emacs <at> gnu.org
Subject: Re: [PATCH] Fix annoying "Parsing...done" message in c++-mode
Date: Wed, 02 Nov 2016 13:09:15 -0700
[Message part 1 (text/plain, inline)]
The attachment is an updated version of the patch.

[cpp-message.patch (text/x-diff, inline)]
diff --git a/lisp/progmodes/cpp.el b/lisp/progmodes/cpp.el
index 7d641ab47f09..75ed7827adf8 100644
--- a/lisp/progmodes/cpp.el
+++ b/lisp/progmodes/cpp.el
@@ -104,6 +104,13 @@ cpp-edit-list
 			       (const :tag "Both branches writable" both))))
   :group 'cpp)
 
+(defcustom cpp-message-min-time-interval 1
+  "The minimum time interval in seconds that cpp-mode should
+print messages.  No message will be printed if set to
+`most-positive-fixnum'."
+  :type 'integer
+  :group 'cpp)
+
 (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 @@ 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)))
@@ -823,10 +830,10 @@ cpp-progress-time
 ;; Last time we issued a progress message.
 
 (defun cpp-progress-message (&rest args)
-  ;; Report progress at most once a second.  Take same ARGS as `message'.
+  "Report progress at most once a second.  Take same ARGS as `message'."
   (let ((time (nth 1 (current-time))))
-    (if (= time cpp-progress-time)
-	()
+    (when (>= (- time cpp-progress-time)
+              cpp-message-min-time-interval)
       (setq cpp-progress-time time)
       (apply 'message args))))
 

Information forwarded to bug-gnu-emacs <at> gnu.org, bug-cc-mode <at> gnu.org:
bug#24861; Package emacs,cc-mode. (Wed, 02 Nov 2016 20:23:02 GMT) Full text and rfc822 format available.

Message #11 received at 24861 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Hong Xu <hong <at> topbug.net>
Cc: 24861 <at> debbugs.gnu.org
Subject: Re: bug#24861: [PATCH] Fix annoying "Parsing...done" message in
 c++-mode
Date: Wed, 02 Nov 2016 22:21:59 +0200
> From: Hong Xu <hong <at> topbug.net>
> Date: Wed, 02 Nov 2016 13:09:15 -0700
> 
> +(defcustom cpp-message-min-time-interval 1
> +  "The minimum time interval in seconds that cpp-mode should
> +print messages.  No message will be printed if set to
> +`most-positive-fixnum'."

Please avoid using passive tense as much as possible (in the last
sentence).

Also, I think it's accepted practice to use nil as the value which
disables a periodic feature.

(Not that I understand why this particular message needs to be
customizable.)

Thanks.




Information forwarded to bug-gnu-emacs <at> gnu.org, bug-cc-mode <at> gnu.org:
bug#24861; Package emacs,cc-mode. (Wed, 02 Nov 2016 22:06:01 GMT) Full text and rfc822 format available.

Message #14 received at 24861 <at> debbugs.gnu.org (full text, mbox):

From: Andreas Schwab <schwab <at> linux-m68k.org>
To: Hong Xu <hong <at> topbug.net>
Cc: 24861 <at> debbugs.gnu.org
Subject: Re: bug#24861: [PATCH] Fix annoying "Parsing...done" message in
 c++-mode
Date: Wed, 02 Nov 2016 23:05:35 +0100
On Nov 02 2016, Hong Xu <hong <at> topbug.net> wrote:

> diff --git a/lisp/progmodes/cpp.el b/lisp/progmodes/cpp.el
> index 7d641ab47f09..75ed7827adf8 100644
> --- a/lisp/progmodes/cpp.el
> +++ b/lisp/progmodes/cpp.el
> @@ -104,6 +104,13 @@ cpp-edit-list
>  			       (const :tag "Both branches writable" both))))
>    :group 'cpp)
>  
> +(defcustom cpp-message-min-time-interval 1
> +  "The minimum time interval in seconds that cpp-mode should

The first line of a doc string should be a full sentence.

Andreas.

-- 
Andreas Schwab, schwab <at> linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."




Information forwarded to bug-gnu-emacs <at> gnu.org, bug-cc-mode <at> gnu.org:
bug#24861; Package emacs,cc-mode. (Wed, 02 Nov 2016 23:35:02 GMT) Full text and rfc822 format available.

Message #17 received at 24861 <at> debbugs.gnu.org (full text, mbox):

From: Hong Xu <hong <at> topbug.net>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 24861 <at> debbugs.gnu.org, Andreas Schwab <schwab <at> linux-m68k.org>
Subject: Re: bug#24861: [PATCH] Fix annoying "Parsing...done" message in
 c++-mode
Date: Wed, 02 Nov 2016 16:34:22 -0700
[Message part 1 (text/plain, inline)]
On 2016-11-02 Wed 13:21 GMT-0700, Eli Zaretskii <eliz <at> gnu.org> wrote:

> (Not that I understand why this particular message needs to be
> customizable.)

Because the messages by cpp.el is so frequent that it often competes
with other useful information. I've added some explanation in the
docstring.

The attachment is a new version.


[cpp-message.patch (text/x-diff, inline)]
diff --git a/lisp/progmodes/cpp.el b/lisp/progmodes/cpp.el
index 7d641ab47f09..a0705023b448 100644
--- a/lisp/progmodes/cpp.el
+++ b/lisp/progmodes/cpp.el
@@ -104,6 +104,15 @@ cpp-edit-list
 			       (const :tag "Both branches writable" both))))
   :group 'cpp)
 
+(defcustom cpp-message-min-time-interval 1
+  "Indicate the minimum time interval in seconds that `cc-mode'
+should print messages.  If set to nil, `cc-mode' will print no
+message.  This may be useful to set when the message `cc-mode'
+prints too many messages that competes with other information in
+the echo area."
+  :type 'integer
+  :group 'cpp)
+
 (defvar cpp-overlay-list nil)
 ;; List of cpp overlays active in the current buffer.
 (make-variable-buffer-local 'cpp-overlay-list)
@@ -278,7 +287,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)))
@@ -823,12 +832,14 @@ cpp-progress-time
 ;; Last time we 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 at most once a second.  Take same ARGS as
+`message'."
+  (when cpp-message-min-time-interval
+    (let ((time (nth 1 (current-time))))
+      (when (>= (- time cpp-progress-time)
+                cpp-message-min-time-interval)
+        (setq cpp-progress-time time)
+        (apply 'message args)))))
 
 (provide 'cpp)
 
[signature.asc (application/pgp-signature, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org, bug-cc-mode <at> gnu.org:
bug#24861; Package emacs,cc-mode. (Wed, 02 Nov 2016 23:40:02 GMT) Full text and rfc822 format available.

Message #20 received at 24861 <at> debbugs.gnu.org (full text, mbox):

From: Hong Xu <hong <at> topbug.net>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 24861 <at> debbugs.gnu.org
Subject: Re: bug#24861: [PATCH] Fix annoying "Parsing...done" message in
 c++-mode
Date: Wed, 02 Nov 2016 16:39:20 -0700
[Message part 1 (text/plain, inline)]
On 2016-11-02 Wed 13:21 GMT-0700, Eli Zaretskii <eliz <at> gnu.org> wrote:

> (Not that I understand why this particular message needs to be
> customizable.)

Also note that this patch does NOT ONLY customize this particular
message: it affects all messages printed by `cpp-progress-message'.



Hong
[signature.asc (application/pgp-signature, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org, bug-cc-mode <at> gnu.org:
bug#24861; Package emacs,cc-mode. (Thu, 03 Nov 2016 16:40:02 GMT) Full text and rfc822 format available.

Message #23 received at 24861 <at> debbugs.gnu.org (full text, mbox):

From: Richard Stallman <rms <at> gnu.org>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 24861 <at> debbugs.gnu.org, hong <at> topbug.net
Subject: Re: bug#24861: [PATCH] Fix annoying "Parsing...done" message in
 c++-mode
Date: Thu, 03 Nov 2016 12:39:08 -0400
[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

  > Please avoid using passive tense as much as possible (in the last
  > sentence).

Thank you for reminding people of this point.

-- 
Dr Richard Stallman
President, Free Software Foundation (gnu.org, fsf.org)
Internet Hall-of-Famer (internethalloffame.org)
Skype: No way! See stallman.org/skype.html.





Information forwarded to bug-gnu-emacs <at> gnu.org, bug-cc-mode <at> gnu.org:
bug#24861; Package emacs,cc-mode. (Thu, 03 Nov 2016 18:15:01 GMT) Full text and rfc822 format available.

Message #26 received at 24861 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Hong Xu <hong <at> topbug.net>
Cc: 24861 <at> debbugs.gnu.org
Subject: Re: bug#24861: [PATCH] Fix annoying "Parsing...done" message in
 c++-mode
Date: Thu, 03 Nov 2016 20:15:03 +0200
> From: Hong Xu <hong <at> topbug.net>
> Cc: 24861 <at> debbugs.gnu.org
> Cc: Andreas Schwab <schwab <at> linux-m68k.org>
> Date: Wed, 02 Nov 2016 16:34:22 -0700
> 
> On 2016-11-02 Wed 13:21 GMT-0700, Eli Zaretskii <eliz <at> gnu.org> wrote:
> 
> > (Not that I understand why this particular message needs to be
> > customizable.)
> 
> Because the messages by cpp.el is so frequent that it often competes
> with other useful information.

Yes, but we have lots of similar messages in other places.  A search
for a call to 'message' that displays "SOMETHING...done" turns up more
than 270 hits.  Why is this particular package being singled out?

Also, what useful information does it conceal?  Can you show a use
case where this happens?

> I've added some explanation in the docstring.

That should not be necessary, such explanations should be in comments
and commit log messages.

Thanks.




Information forwarded to bug-gnu-emacs <at> gnu.org, bug-cc-mode <at> gnu.org:
bug#24861; Package emacs,cc-mode. (Thu, 03 Nov 2016 18:45:02 GMT) Full text and rfc822 format available.

Message #29 received at 24861 <at> debbugs.gnu.org (full text, mbox):

From: Hong Xu <hong <at> topbug.net>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 24861 <at> debbugs.gnu.org
Subject: Re: bug#24861: [PATCH] Fix annoying "Parsing...done" message in
 c++-mode
Date: Thu, 03 Nov 2016 11:43:53 -0700
[Message part 1 (text/plain, inline)]
On 2016-11-03 Thu 11:15 GMT-0700, Eli Zaretskii <eliz <at> gnu.org> wrote:

>> From: Hong Xu <hong <at> topbug.net>
>> Cc: 24861 <at> debbugs.gnu.org
>> Cc: Andreas Schwab <schwab <at> linux-m68k.org>
>> Date: Wed, 02 Nov 2016 16:34:22 -0700
>>
>> On 2016-11-02 Wed 13:21 GMT-0700, Eli Zaretskii <eliz <at> gnu.org> wrote:
>>
>> > (Not that I understand why this particular message needs to be
>> > customizable.)
>>
>> Because the messages by cpp.el is so frequent that it often competes
>> with other useful information.
>
> Yes, but we have lots of similar messages in other places.  A search
> for a call to 'message' that displays "SOMETHING...done" turns up more
> than 270 hits.  Why is this particular package being singled out?

It was not me who singled out this particular package; it was singled
out before, with the frequency hard coded to be 1 second. I just made it
more flexible and correct a misused plain `message'.

>
> Also, what useful information does it conceal?  Can you show a use
> case where this happens?

I've never seen how these information can be useful (ideally I would say
concealing all these cpp-progress-message unless some debug option is
turned on), but I'm probably not qualified enough to make such
assertion.

One annoying case is that I've set up to show the syntax error at point,
but the "Parsing...done" message frequently comes in the way before I
can read the message.
[signature.asc (application/pgp-signature, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org, bug-cc-mode <at> gnu.org:
bug#24861; Package emacs,cc-mode. (Wed, 16 Nov 2016 00:04:02 GMT) Full text and rfc822 format available.

Message #32 received at 24861 <at> debbugs.gnu.org (full text, mbox):

From: Hong Xu <hong <at> topbug.net>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 24861 <at> debbugs.gnu.org
Subject: Re: bug#24861: [PATCH] Fix annoying "Parsing...done" message in
 c++-mode
Date: Tue, 15 Nov 2016 16:03:19 -0800
[Message part 1 (text/plain, inline)]
On 2016-11-03 Thu 11:43 GMT-0800, Hong Xu <hong <at> topbug.net> wrote:

> On 2016-11-03 Thu 11:15 GMT-0700, Eli Zaretskii <eliz <at> gnu.org> wrote:
>
>>> From: Hong Xu <hong <at> topbug.net>
>>> Cc: 24861 <at> debbugs.gnu.org
>>> Cc: Andreas Schwab <schwab <at> linux-m68k.org>
>>> Date: Wed, 02 Nov 2016 16:34:22 -0700
>>>
>>> On 2016-11-02 Wed 13:21 GMT-0700, Eli Zaretskii <eliz <at> gnu.org> wrote:
>>>
>>> > (Not that I understand why this particular message needs to be
>>> > customizable.)
>>>
>>> Because the messages by cpp.el is so frequent that it often competes
>>> with other useful information.
>>
>> Yes, but we have lots of similar messages in other places.  A search
>> for a call to 'message' that displays "SOMETHING...done" turns up more
>> than 270 hits.  Why is this particular package being singled out?
>
> It was not me who singled out this particular package; it was singled
> out before, with the frequency hard coded to be 1 second. I just made it
> more flexible and correct a misused plain `message'.
>
>>
>> Also, what useful information does it conceal?  Can you show a use
>> case where this happens?
>
> I've never seen how these information can be useful (ideally I would say
> concealing all these cpp-progress-message unless some debug option is
> turned on), but I'm probably not qualified enough to make such
> assertion.
>
> One annoying case is that I've set up to show the syntax error at point,
> but the "Parsing...done" message frequently comes in the way before I
> can read the message.

Can you still consider this patch?
[signature.asc (application/pgp-signature, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org, bug-cc-mode <at> gnu.org:
bug#24861; Package emacs,cc-mode. (Fri, 18 Nov 2016 09:40:02 GMT) Full text and rfc822 format available.

Message #35 received at 24861 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Hong Xu <hong <at> topbug.net>
Cc: 24861 <at> debbugs.gnu.org
Subject: Re: bug#24861: [PATCH] Fix annoying "Parsing...done" message in
 c++-mode
Date: Fri, 18 Nov 2016 11:39:42 +0200
> From: Hong Xu <hong <at> topbug.net>
> Cc: 24861 <at> 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.

Thanks.




Information forwarded to bug-gnu-emacs <at> gnu.org, bug-cc-mode <at> gnu.org:
bug#24861; Package emacs,cc-mode. (Fri, 18 Nov 2016 19:56:02 GMT) Full text and rfc822 format available.

Message #38 received at 24861 <at> debbugs.gnu.org (full text, mbox):

From: Hong Xu <hong <at> topbug.net>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 24861 <at> debbugs.gnu.org
Subject: Re: bug#24861: [PATCH] Fix annoying "Parsing...done" message in
 c++-mode
Date: Fri, 18 Nov 2016 11:55:28 -0800
[Message part 1 (text/plain, inline)]
On 11/18/2016 01:39 AM, Eli Zaretskii wrote:
>> From: Hong Xu <hong <at> topbug.net>
>> Cc: 24861 <at> 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.
[cpp-message.patch (text/x-patch, attachment)]
[signature.asc (application/pgp-signature, attachment)]

Information forwarded to bug-gnu-emacs <at> gnu.org, bug-cc-mode <at> gnu.org:
bug#24861; Package emacs,cc-mode. (Sat, 19 Nov 2016 07:51:01 GMT) Full text and rfc822 format available.

Message #41 received at 24861 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Hong Xu <hong <at> topbug.net>
Cc: 24861 <at> debbugs.gnu.org
Subject: Re: bug#24861: [PATCH] Fix annoying "Parsing...done" message in
 c++-mode
Date: Sat, 19 Nov 2016 09:50:40 +0200
> Cc: 24861 <at> debbugs.gnu.org
> From: Hong Xu <hong <at> topbug.net>
> Date: Fri, 18 Nov 2016 11:55:28 -0800
> 
> 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, but there are still left-overs:

> +(defcustom cpp-message-min-time-interval 1.0
> +  "Indicate the minimum time interval in seconds that
> +`cpp-progress-message' should print messages.

This should be one line, so the sentence should be shorter to fit.  If
you drop the redundant "Indicate the" part, it will come close.

> -(defvar cpp-progress-time 0)
> -;; Last time we issued a progress message.
> +(defvar cpp-progress-time '(0 0 0 0)

You could leave it at 0, no need to have a list here.

> +  "Indicate the last time `cpp-progress-message' issued a
> +  progress message.")

This should be a single line.  Once again, please drop the uneeded
"Indicate" part.

>  (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'."

The first sentence of the doc string should take only one line.




Information forwarded to bug-gnu-emacs <at> gnu.org, bug-cc-mode <at> gnu.org:
bug#24861; Package emacs,cc-mode. (Sun, 20 Nov 2016 00:21:01 GMT) Full text and rfc822 format available.

Message #44 received at 24861 <at> debbugs.gnu.org (full text, mbox):

From: Hong Xu <hong <at> topbug.net>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 24861 <at> debbugs.gnu.org
Subject: Re: bug#24861: [PATCH] Fix annoying "Parsing...done" message in
 c++-mode
Date: Sat, 19 Nov 2016 16:20:10 -0800
[Message part 1 (text/plain, inline)]
On 2016-11-18 Fri 23:50 GMT-0800, Eli Zaretskii <eliz <at> gnu.org> wrote:

>> Cc: 24861 <at> debbugs.gnu.org
>> From: Hong Xu <hong <at> topbug.net>
>> Date: Fri, 18 Nov 2016 11:55:28 -0800
>> 
>> 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, but there are still left-overs:
>
>> +(defcustom cpp-message-min-time-interval 1.0
>> +  "Indicate the minimum time interval in seconds that
>> +`cpp-progress-message' should print messages.
>
> This should be one line, so the sentence should be shorter to fit.  If
> you drop the redundant "Indicate the" part, it will come close.
>
>> -(defvar cpp-progress-time 0)
>> -;; Last time we issued a progress message.
>> +(defvar cpp-progress-time '(0 0 0 0)
>
> You could leave it at 0, no need to have a list here.
>
>> +  "Indicate the last time `cpp-progress-message' issued a
>> +  progress message.")
>
> This should be a single line.  Once again, please drop the uneeded
> "Indicate" part.
>
>>  (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'."
>
> The first sentence of the doc string should take only one line.

Thanks, updated.



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): Improve the documentation.

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

[cpp-message.patch (text/x-diff, inline)]
diff --git a/lisp/progmodes/cpp.el b/lisp/progmodes/cpp.el
index 7d641ab47f09..fc8c271cc5ec 100644
--- a/lisp/progmodes/cpp.el
+++ b/lisp/progmodes/cpp.el
@@ -104,6 +104,13 @@ cpp-edit-list
 			       (const :tag "Both branches writable" both))))
   :group 'cpp)
 
+(defcustom cpp-message-min-time-interval 1.0
+  "The minimum time interval in seconds that `cpp-progress-message' prints messages.
+If it is set to nil, `cpp-progress-message' prints no message."
+  :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 @@ 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 +826,21 @@ cpp-face-name
 
 ;;; Utilities:
 
-(defvar cpp-progress-time 0)
-;; Last time we issued a progress message.
+(defvar cpp-progress-time 0
+  "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 used by \"cpp-\" functions.
+It prints messages at most once every
+`cpp-message-min-time-interval' seconds.  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)
 
[signature.asc (application/pgp-signature, inline)]

Reply sent to Eli Zaretskii <eliz <at> gnu.org>:
You have taken responsibility. (Fri, 25 Nov 2016 10:55:01 GMT) Full text and rfc822 format available.

Notification sent to Hong Xu <hong <at> topbug.net>:
bug acknowledged by developer. (Fri, 25 Nov 2016 10:55:02 GMT) Full text and rfc822 format available.

Message #49 received at 24861-done <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Hong Xu <hong <at> topbug.net>
Cc: 24861-done <at> debbugs.gnu.org
Subject: Re: bug#24861: [PATCH] Fix annoying "Parsing...done" message in
 c++-mode
Date: Fri, 25 Nov 2016 12:53:45 +0200
> From: Hong Xu <hong <at> topbug.net>
> Cc: 24861 <at> debbugs.gnu.org
> Date: Sat, 19 Nov 2016 16:20:10 -0800
> 
> Thanks, updated.

Thanks, pushed to master.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Fri, 23 Dec 2016 12:24:04 GMT) Full text and rfc822 format available.

This bug report was last modified 8 years and 176 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.