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 --]
next prev parent 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.