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

From: Sean Devlin <[email-masked]>
Date: Sat, 2 Aug 2025 09:51:08 -0500

> 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!

> 
>> ---
>> 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)
>>