diff --git a/doc/misc/calc.texi b/doc/misc/calc.texi index eda442ecb38..9b7cdd8b37f 100644 --- a/doc/misc/calc.texi +++ b/doc/misc/calc.texi @@ -35714,6 +35714,14 @@ The default value of @code{calc-string-maximum-character} is @code{0xFF} or 255. @end defvar +@defvar calc-inhibit-startup-message +The variable @code{calc-inhibit-startup-message} controls display of a +welcome message when starting Calc. If it is @code{nil} (the default), +Calc will print a brief message listing key bindings to get help or to +quit. If it is non-@code{nil}, Calc will start without printing +anything. +@end defvar + @node Reporting Bugs @appendix Reporting Bugs diff --git a/etc/NEWS b/etc/NEWS index af6dd0c2151..37d38d0d91d 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -2605,6 +2605,11 @@ 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 @@ commands given here will actually operate on the *Calculator* stack." (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 @@ See `window-dedicated-p' for what that means." (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! \\" - "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! \\" + "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 @@ See `window-dedicated-p' for what that means." (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 @@ an error in the comparison." (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