summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorGlenn Morris <rgm@gnu.org>2013-09-17 00:39:54 -0700
committerGlenn Morris <rgm@gnu.org>2013-09-17 00:39:54 -0700
commit90582f05bc41bb832716926be1593c66b8219151 (patch)
tree3d611c640a9fe398573933b46d4125ee44a61a59 /lisp
parent33b83dd70c242357e542278b9d011f2c545d1f77 (diff)
downloademacs-90582f05bc41bb832716926be1593c66b8219151.tar.gz
Add a major-mode for the *Messages* buffer
Ref: http://lists.gnu.org/archive/html/emacs-devel/2010-02/msg00135.html * lisp/simple.el (messages-buffer-mode): New major mode. (messages-buffer): New function. * lisp/startup.el (normal-top-level): Switch mode of *Messages* buffer. * src/xdisp.c (message_dolog): If we create *Messages*, switch it to messages-buffer-mode. * lisp/emacs-lisp/ert.el (ert--force-message-log-buffer-truncation) (ert-run-test): Use `message-buffer' function. (ert--force-message-log-buffer-truncation): Ignore read-only. * lisp/help.el (view-echo-area-messages): Use `message-buffer' function. * lisp/mail/emacsbug.el (report-emacs-bug): Use `message-buffer' function. * lisp/gnus/gnus-util.el (gnus-message-with-timestamp-1): Use `message-buffer' function if available. Ignore read-only. * etc/NEWS: Mention this.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog11
-rw-r--r--lisp/emacs-lisp/ert.el9
-rw-r--r--lisp/gnus/ChangeLog5
-rw-r--r--lisp/gnus/gnus-util.el11
-rw-r--r--lisp/help.el5
-rw-r--r--lisp/mail/emacsbug.el6
-rw-r--r--lisp/simple.el12
-rw-r--r--lisp/startup.el4
8 files changed, 47 insertions, 16 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 15afc3ad19e..ceae81b91e0 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,14 @@
+2013-09-17 Glenn Morris <rgm@gnu.org>
+
+ * simple.el (messages-buffer-mode): New major mode.
+ (messages-buffer): New function.
+ * startup.el (normal-top-level): Switch mode of *Messages* buffer.
+ * emacs-lisp/ert.el (ert--force-message-log-buffer-truncation)
+ (ert-run-test): Use `message-buffer' function.
+ (ert--force-message-log-buffer-truncation): Ignore read-only.
+ * help.el (view-echo-area-messages): Use `message-buffer' function.
+ * mail/emacsbug.el (report-emacs-bug): Use `message-buffer' function.
+
2013-09-17 Stefan Monnier <monnier@iro.umontreal.ca>
* subr.el (eval-after-load): Preserve evaluation order (bug#15389).
diff --git a/lisp/emacs-lisp/ert.el b/lisp/emacs-lisp/ert.el
index 98576687f3d..409e4faf4d5 100644
--- a/lisp/emacs-lisp/ert.el
+++ b/lisp/emacs-lisp/ert.el
@@ -785,7 +785,7 @@ This mainly sets up debugger-related bindings."
"Immediately truncate *Messages* buffer according to `message-log-max'.
This can be useful after reducing the value of `message-log-max'."
- (with-current-buffer (get-buffer-create "*Messages*")
+ (with-current-buffer (messages-buffer)
;; This is a reimplementation of this part of message_dolog() in xdisp.c:
;; if (NATNUMP (Vmessage_log_max))
;; {
@@ -798,7 +798,8 @@ This can be useful after reducing the value of `message-log-max'."
(end (save-excursion
(goto-char (point-max))
(forward-line (- message-log-max))
- (point))))
+ (point)))
+ (inhibit-read-only t))
(delete-region begin end)))))
(defvar ert--running-tests nil
@@ -818,7 +819,7 @@ Returns the result and stores it in ERT-TEST's `most-recent-result' slot."
(setf (ert-test-most-recent-result ert-test) nil)
(cl-block error
(let ((begin-marker
- (with-current-buffer (get-buffer-create "*Messages*")
+ (with-current-buffer (messages-buffer)
(point-max-marker))))
(unwind-protect
(let ((info (make-ert--test-execution-info
@@ -837,7 +838,7 @@ Returns the result and stores it in ERT-TEST's `most-recent-result' slot."
(ert--run-test-internal info))
(let ((result (ert--test-execution-info-result info)))
(setf (ert-test-result-messages result)
- (with-current-buffer (get-buffer-create "*Messages*")
+ (with-current-buffer (messages-buffer)
(buffer-substring begin-marker (point-max))))
(ert--force-message-log-buffer-truncation)
(setq should-form-accu (nreverse should-form-accu))
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index fc8ff9fd695..2889ead69ed 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,8 @@
+2013-09-17 Glenn Morris <rgm@gnu.org>
+
+ * gnus-util.el (gnus-message-with-timestamp-1):
+ Use `message-buffer' function if available. Ignore read-only.
+
2013-09-16 Katsumi Yamaoka <yamaoka@jpl.org>
* message.el (message-expand-group, message-completion-in-region):
diff --git a/lisp/gnus/gnus-util.el b/lisp/gnus/gnus-util.el
index 1d2ab2da248..4f63f4bdbc0 100644
--- a/lisp/gnus/gnus-util.el
+++ b/lisp/gnus/gnus-util.el
@@ -514,11 +514,14 @@ but also to the ones displayed in the echo area."
(> message-log-max 0)
(/= (length str) 0))
(setq time (current-time))
- (with-current-buffer (get-buffer-create "*Messages*")
+ (with-current-buffer (if (fboundp 'messages-buffer)
+ (messages-buffer)
+ (get-buffer-create "*Messages*"))
(goto-char (point-max))
- (insert ,timestamp str "\n")
- (forward-line (- message-log-max))
- (delete-region (point-min) (point))
+ (let ((inhibit-read-only t))
+ (insert ,timestamp str "\n")
+ (forward-line (- message-log-max))
+ (delete-region (point-min) (point)))
(goto-char (point-max))))
str)
(gnus-add-timestamp-to-message
diff --git a/lisp/help.el b/lisp/help.el
index 4ec0b99a593..c21d5b8c1d1 100644
--- a/lisp/help.el
+++ b/lisp/help.el
@@ -1,7 +1,6 @@
;;; help.el --- help commands for Emacs
-;; Copyright (C) 1985-1986, 1993-1994, 1998-2013 Free Software
-;; Foundation, Inc.
+;; Copyright (C) 1985-1986, 1993-1994, 1998-2013 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: help, internal
@@ -412,7 +411,7 @@ With argument, display info only for the selected version."
The number of messages retained in that buffer
is specified by the variable `message-log-max'."
(interactive)
- (with-current-buffer (get-buffer-create "*Messages*")
+ (with-current-buffer (messages-buffer)
(goto-char (point-max))
(display-buffer (current-buffer))))
diff --git a/lisp/mail/emacsbug.el b/lisp/mail/emacsbug.el
index c1bc7e2e1ab..e045519e850 100644
--- a/lisp/mail/emacsbug.el
+++ b/lisp/mail/emacsbug.el
@@ -1,7 +1,7 @@
;;; emacsbug.el --- command to report Emacs bugs to appropriate mailing list
-;; Copyright (C) 1985, 1994, 1997-1998, 2000-2013 Free Software
-;; Foundation, Inc.
+;; Copyright (C) 1985, 1994, 1997-1998, 2000-2013
+;; Free Software Foundation, Inc.
;; Author: K. Shane Hartman
;; Maintainer: FSF
@@ -160,7 +160,7 @@ Prompts for bug subject. Leaves you in a mail buffer."
(report-emacs-bug-can-use-osx-open)))
user-point message-end-point)
(setq message-end-point
- (with-current-buffer (get-buffer-create "*Messages*")
+ (with-current-buffer (messages-buffer)
(point-max-marker)))
(compose-mail report-emacs-bug-address topic)
;; The rest of this does not execute if the user was asked to
diff --git a/lisp/simple.el b/lisp/simple.el
index 593f36d1ee1..54630681a68 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -7344,6 +7344,18 @@ and setting it to nil."
buffer-invisibility-spec)
(setq buffer-invisibility-spec nil)))
+(define-derived-mode messages-buffer-mode special-mode "Messages"
+ "Major mode used in the \"*Messages*\" buffer.")
+
+(defun messages-buffer ()
+ "Return the \"*Messages*\" buffer.
+If it does not exist, create and it switch it to `messages-buffer-mode'."
+ (or (get-buffer "*Messages*")
+ (with-current-buffer (get-buffer-create "*Messages*")
+ (messages-buffer-mode)
+ (current-buffer))))
+
+
;; Minibuffer prompt stuff.
;;(defun minibuffer-prompt-modification (start end)
diff --git a/lisp/startup.el b/lisp/startup.el
index ec7d73306a2..059d7710320 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -1,7 +1,6 @@
;;; startup.el --- process Emacs shell arguments -*- lexical-binding: t -*-
-;; Copyright (C) 1985-1986, 1992, 1994-2013 Free Software Foundation,
-;; Inc.
+;; Copyright (C) 1985-1986, 1992, 1994-2013 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: internal
@@ -494,6 +493,7 @@ It is the default value of the variable `top-level'."
(setq command-line-processed t)
(let ((dir default-directory))
(with-current-buffer "*Messages*"
+ (messages-buffer-mode)
;; Make it easy to do like "tail -f".
(set (make-local-variable 'window-point-insertion-type) t)
;; Give *Messages* the same default-directory as *scratch*,