From ea8079ee38f752c412d700a7675d8937466c2b14 Mon Sep 17 00:00:00 2001 From: "Basil L. Contovounesios" Date: Mon, 16 Nov 2020 14:40:57 +0000 Subject: [PATCH] Avoid spamming view-mode-enter help message MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit By default, entering view-mode echoes a usage message. This is particularly helpful with non-nil view-read-only, to notify the user that view-mode has been enabled. It is less useful and more spammy, however, if view-mode is (possibly inadvertently) entered from some non-interactive code running in the background, such as when a major mode is enabled in a temporary buffer for text formatting purposes (bug#44629). * lisp/jsonrpc.el (jsonrpc-events-buffer, initialize-instance): Use buffer-read-only in place of read-only-mode for non-interactive use. * lisp/view.el (view-mode-enter): Inhibit help message if either view-inhibit-help-message is non-nil, or view-mode-enter was called from an interactive command. Suggested by João Távora . --- lisp/jsonrpc.el | 27 +++++++++++++-------------- lisp/view.el | 9 +++++++-- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/lisp/jsonrpc.el b/lisp/jsonrpc.el index 7de6baeb00..e1b832c407 100644 --- a/lisp/jsonrpc.el +++ b/lisp/jsonrpc.el @@ -138,18 +138,15 @@ jsonrpc-lambda (defun jsonrpc-events-buffer (connection) "Get or create JSONRPC events buffer for CONNECTION." - (let* ((probe (jsonrpc--events-buffer connection)) - (buffer (or (and (buffer-live-p probe) - probe) - (let ((buffer (get-buffer-create - (format "*%s events*" - (jsonrpc-name connection))))) - (with-current-buffer buffer - (buffer-disable-undo) - (read-only-mode t) - (setf (jsonrpc--events-buffer connection) buffer)) - buffer)))) - buffer)) + (let ((probe (jsonrpc--events-buffer connection))) + (if (buffer-live-p probe) + probe + (with-current-buffer + (get-buffer-create (format "*%s events*" (jsonrpc-name connection))) + (buffer-disable-undo) + (setq buffer-read-only t) + (setf (jsonrpc--events-buffer connection) + (current-buffer)))))) (defun jsonrpc-forget-pending-continuations (connection) "Stop waiting for responses from the current JSONRPC CONNECTION." @@ -404,7 +401,7 @@ initialize-instance (ignore-errors (kill-buffer hidden-name)) (rename-buffer hidden-name) (process-put proc 'jsonrpc-stderr (current-buffer)) - (read-only-mode t)))) + (setq buffer-read-only t)))) (setf (jsonrpc--process conn) proc) (set-process-buffer proc (get-buffer-create (format " *%s output*" name))) (set-process-filter proc #'jsonrpc--process-filter) @@ -412,7 +409,9 @@ initialize-instance (with-current-buffer (process-buffer proc) (buffer-disable-undo) (set-marker (process-mark proc) (point-min)) - (let ((inhibit-read-only t)) (erase-buffer) (read-only-mode t))) + (let ((inhibit-read-only t)) + (erase-buffer)) + (setq buffer-read-only t)) (process-put proc 'jsonrpc-connection conn))) (cl-defmethod jsonrpc-connection-send ((connection jsonrpc-process-connection) diff --git a/lisp/view.el b/lisp/view.el index 204e28c2a2..6f576f8c04 100644 --- a/lisp/view.el +++ b/lisp/view.el @@ -88,7 +88,9 @@ view-exits-all-viewing-windows :group 'view) (defcustom view-inhibit-help-message nil - "Non-nil inhibits the help message shown upon entering View mode." + "Non-nil inhibits the help message shown upon entering View mode. +This setting takes effect only when View mode is entered via an +interactive command; otherwise the help message is not shown." :type 'boolean :group 'view :version "22.1") @@ -559,7 +561,10 @@ view-mode-enter (unless view-mode (view-mode 1) - (unless view-inhibit-help-message + (when (and (not view-inhibit-help-message) + ;; Avoid spamming the echo area if `view-mode' is entered + ;; non-interactively, e.g., in a temporary buffer (bug#44629). + this-command) (message "%s" (substitute-command-keys "\ View mode: type \\[help-command] for help, \\[describe-mode] for commands, \\[View-quit] to quit."))))) -- 2.29.2