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