Subject: bug#79143: [PATCH] New user option to inhibit Calc startup message

From: Sean Devlin <[email-masked]>
Date: Sat, 2 Aug 2025 11:04:22 -0500

> On Aug 2, 2025, at 9:51 AM, Sean Devlin <[email-masked]> wrote:
> 
>> 
>> On Aug 2, 2025, at 1:33 AM, Eli Zaretskii <[email-masked]> wrote:
>> 
>>> From: Sean Devlin <[email-masked]>
>>> Date: Fri, 1 Aug 2025 17:15:36 -0500
>>> 
>>> This is a patch adding a new user option to suppress Calc’s startup
>>> message.
>>> 
>>> By default, Calc prints a message like this during startup:
>>> 
>>> "Welcome to the GNU Emacs Calculator!  Press ? or M-x calc-help-prefix
>>> for help, q to quit"
>>> 
>>> I find this a bit distracting, so I’d like to be able to silence it. The
>>> attached patch adds an option to allow this along with a small test
>>> harness and documentation in the NEWS file.
>>> 
>>> Please let me know if any changes are needed to the patch.
>> 
>> Thanks.
>> 
>> Christopher, any comments?  (I hope you don't mind being involved in
>> maintenance of Calc by way of reviewing patches of others.)
>> 
>>> From 1ad1f17b6c9326ffc009c6de5c5f2b9929014f52 Mon Sep 17 00:00:00 2001
>>> From: Sean Devlin <[email-masked]>
>>> Date: Fri, 1 Aug 2025 17:05:48 -0500
>>> Subject: [PATCH] New user option to inhibit Calc startup message
>>> MIME-Version: 1.0
>>> Content-Type: text/plain; charset=UTF-8
>>> Content-Transfer-Encoding: 8bit
>>> 
>>> * etc/NEWS: Document the new option.
>>> * lisp/calc/calc.el (calc-inhibit-startup-message): New option to
>>> inhibit Calc’s startup message.
>>> (calc): Respect the option in Calc’s startup code.
>>> * test/lisp/calc/calc-tests.el (ert): Require ert-x for
>>> 'ert-with-message-capture'.
>>> (calc-inhibit-startup-message): Test the new user option.
>> 
>> Should this new option be in the Calc manual as well?  If you agree
>> and send an updated patch for that, then please (a) mention the bug
>> number in the commit log message, and (b) mark the NEWS entry as
>> "+++", to indicate that the relevant manuals have been updated.
> 
> Hi Eli,
> 
> I’ve taken a stab at this. Please see the attached patch, and let me know if the
> language or formatting need any revision.
> 
> Thanks!
> 
> <0001-Add-user-option-to-inhibit-Calc-startup-message.patch>

Wait, try this one instead. I had forgotten to add the “+++” and amend the commit log.

￼
>> 
>>> ---
>>> etc/NEWS                     |  4 ++++
>>> lisp/calc/calc.el            | 21 ++++++++++++++-------
>>> test/lisp/calc/calc-tests.el | 15 +++++++++++++++
>>> 3 files changed, 33 insertions(+), 7 deletions(-)
>>> 
>>> diff --git a/etc/NEWS b/etc/NEWS
>>> index f4e64c0851f..aa1936fe7fc 100644
>>> --- a/etc/NEWS
>>> +++ b/etc/NEWS
>>> @@ -2305,6 +2305,10 @@ Latin-1 range 0-255.  This hard-coded maximum is replaced by
>>> the display of matching vectors as Unicode strings.  The default value
>>> is 0xFF or 255 to preserve the existing behavior.
>>> 
>>> +*** New user option 'calc-inhibit-startup-message'.
>>> +If it is non-nil, inhibit Calc from printing its startup message.  The
>>> +default value is nil to preserve the existing behavior.
>>> +
>>> ** Time
>>> 
>>> *** New user option 'world-clock-sort-order'.
>>> diff --git a/lisp/calc/calc.el b/lisp/calc/calc.el
>>> index a350419b320..d4fb8776c6c 100644
>>> --- a/lisp/calc/calc.el
>>> +++ b/lisp/calc/calc.el
>>> @@ -1473,6 +1473,11 @@ calc-create-buffer
>>>    (require 'calc-ext)
>>>    (calc-set-language calc-language calc-language-option t)))
>>> 
>>> +(defcustom calc-inhibit-startup-message nil
>>> +  "If non-nil, inhibit the Calc startup message."
>>> +  :version "31.1"
>>> +  :type 'boolean)
>>> +
>>> (defcustom calc-make-windows-dedicated nil
>>>  "If non-nil, windows displaying Calc buffers will be marked dedicated.
>>> See `window-dedicated-p' for what that means."
>>> @@ -1524,9 +1529,10 @@ calc
>>>        (with-current-buffer (calc-trail-buffer)
>>>          (and calc-display-trail
>>>               (calc-trail-display 1 t)))
>>> -        (message (substitute-command-keys
>>> -                  (concat "Welcome to the GNU Emacs Calculator!  \\<calc-mode-map>"
>>> -                          "Press \\[calc-help] or \\[calc-help-prefix] for help, \\[calc-quit] to quit")))
>>> +        (unless calc-inhibit-startup-message
>>> +          (message (substitute-command-keys
>>> +                    (concat "Welcome to the GNU Emacs Calculator!  \\<calc-mode-map>"
>>> +                            "Press \\[calc-help] or \\[calc-help-prefix] for help, \\[calc-quit] to quit"))))
>>>        (run-hooks 'calc-start-hook)
>>>        (and (windowp full-display)
>>>             (window-point full-display)
>>> @@ -1534,10 +1540,11 @@ calc
>>>        (and calc-make-windows-dedicated
>>>             (set-window-dedicated-p nil t))
>>>        (calc-check-defines)
>>> -        (when (and calc-said-hello interactive)
>>> -          (sit-for 2)
>>> -          (message ""))
>>> -        (setq calc-said-hello t)))))
>>> +        (unless calc-inhibit-startup-message
>>> +          (when (and calc-said-hello interactive)
>>> +            (sit-for 2)
>>> +            (message ""))
>>> +          (setq calc-said-hello t))))))
>>> 
>>> ;;;###autoload
>>> (defun full-calc (&optional interactive)
>>> diff --git a/test/lisp/calc/calc-tests.el b/test/lisp/calc/calc-tests.el
>>> index 2fd6a6be45e..49762e146a5 100644
>>> --- a/test/lisp/calc/calc-tests.el
>>> +++ b/test/lisp/calc/calc-tests.el
>>> @@ -26,6 +26,7 @@
>>> 
>>> (require 'cl-lib)
>>> (require 'ert)
>>> +(require 'ert-x)
>>> (require 'calc)
>>> (require 'calc-ext)
>>> (require 'calc-units)
>>> @@ -946,5 +947,19 @@ calc-math-vector-is-string
>>>      (should-error (math-vector-is-string cplx-vec)
>>>                    :type 'wrong-type-argument))))
>>> 
>>> +(ert-deftest calc-inhibit-startup-message ()
>>> +  "Test user option `calc-inhibit-startup-message'."
>>> +  (let ((welcome-message "Welcome to the GNU Emacs Calculator!"))
>>> +    (ert-with-message-capture messages
>>> +      (let ((calc-inhibit-startup-message t))
>>> +        (calc))
>>> +      (should-not (string-match-p welcome-message messages))
>>> +      (calc-quit))
>>> +    (ert-with-message-capture messages
>>> +      (let ((calc-inhibit-startup-message nil))
>>> +        (calc))
>>> +      (should (string-match-p welcome-message messages))
>>> +      (calc-quit))))
>>> +
>>> (provide 'calc-tests)
>>> ;;; calc-tests.el ends here
>>> -- 
>>> 2.39.5 (Apple Git-154)