Article View: gnu.epoch.misc
Article #1344Re: How do I get rid of "Mail"
From: Mark D. Baushke
Date: Wed, 10 Jun 1992 03:13
Date: Wed, 10 Jun 1992 03:13
308 lines
11543 bytes
11543 bytes
On 10 Jun 92 08:54:39 GMT, nebbe@lglsun.epfl.ch (Robb Nebbe) said:
Robb> I've modified my mode line but I haven't been able to figure out how to
Robb> get rid of the " Mail" that is at the end of the display-time-string
Robb> (which is generated by the display-time function?) I already have enough
Robb> things in my environment telling me when I have mail or what ever the
Robb> "Mail" is trying to tell me.
Robb> Does anyone have a fix for this? Thanks in advance.
Robb> Robb Nebbe
Robb> nebbe@lglsun.epfl.ch
You may find the following replacement for time.el to be useful. Save
it into a file called my-time.el somewhere in your load-path and put
the following into your ~/.emacs file:
(setq display-no-mail t)
(require 'my-time)
Enjoy!
-- Mark
mdb@nsd.3com.com
;; modified for use in 18.56 by Roland McGrath
;; added display-no-mail flag by Mark D. Baushke for use by Robb Nebbe
;Date: 19 May 89 16:25:10 GMT
;From: "Mark D. Baushke" <apple!oliveb!3comvax!bridge2!mdb@BBN.COM>
;Sender: arpa-unix-emacs-request@BBN.COM
;Subject: full-featured version of time.el (was Re: display-time)
;References: <24576@agate.BERKELEY.EDU>, <40157@bbn.COM>
;Organization: 3Com Corp., Mountain View, CA.
;Source-Info: From (or Sender) name not authenticated.
;
;In article <40157@bbn.COM> jr@bbn.com (John Robinson) writes:
;>In article <24576@agate.BERKELEY.EDU>, alanw@django (Alan Weinstein) writes:
;>>Is it possible to eliminate the "load" information from the status
;>>line when display-time is invoked?
;>
;>display-time simply runs the program `loadst'. Normally, this
;>resolves to /usr/local/emacs/etc/loadst, but if your exec-path
;>variable has a directory earlier than that one that contains an
;>executable loadst, it will be used instead. So you can modify
;>loadst.c to make a private version, or better yet, simply make it the
;>shellscript:
;>
;>while true
;>do date +%r
;> sleep $2
;>done
;
;Alternatively, you can modify time.el to do what you want. I did this
;starting back in 1987 and have kept it up with each version since.
;
;The following is a 'full featured' (maybe too many?) version of
;time.el which I am currently running under GNU Emacs 18.51. It should
;work with 18.54 with no problems since time.el has not changed between
;18.51 and 18.54.
;
;Features of interest:
;
; * Provides a hook to 'beep' on new mail arrival.
;
; * load information can be suppressed completely. A zero load
; 0.00[0] is always supressed
;
; * time can be suppressed (only the Mail flag will be displayed)
;
; * A simple timer mechanism can tell you to 'go home' at a
; particular time each day or may be used as a reminder
; service by setting display-gohome-time like
;
; (setq display-gohome-time '(
; ("Wed" 1115 "Dentist Appt." 2030)
; ("Thu" 1845 "Pick up kids" 2030)
; ))
;
;I find it quite handy. Just remember to load it from you ~/.emacs
;before your (display-time).
;
;N.B.: This code should probably use the save-match-data stuff recently
;posted, but I don't have time to add that right now. Feel free to do so.
;
;Improvements welcome.
;
;Enjoy!
;--
;Mark D. Baushke
;UUCP: {3comvax,auspex,sun}!bridge2!mdb
;Nameserver: mdb@bridge2.ESD.3Com.COM
;;;;;;;;;;;;;;;;;;;;;;;;;;; -*- Mode: Emacs-Lisp -*- ;;;;;;;;;;;;;;;;;;;;;;;;;;
;; my-time.el --- modified 18.51 time.el
;;
;; Author : Mark D. Baushke
;; Created On : Sep 15, 1987
;; Last Modified By: Mark D. Baushke
;; Last Modified On: Thu Mar 9 09:38:28 1989
;; Update Count : 2
;; Status : OK.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Display time and load in mode line of Emacs.
;; Copyright (C) 1985, 1986, 1987 Free Software Foundation, Inc.
;; This file is part of GNU Emacs.
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY. No author or distributor
;; accepts responsibility to anyone for the consequences of using it
;; or for whether it serves any particular purpose or works at all,
;; unless he says so in writing. Refer to the GNU Emacs General Public
;; License for full details.
;; Everyone is granted permission to copy, modify and redistribute
;; GNU Emacs, but only under the conditions described in the
;; GNU Emacs General Public License. A copy of this license is
;; supposed to have been given to you along with GNU Emacs so you
;; can know your rights and responsibilities. It should be in a
;; file named COPYING. Among other things, the copyright notice
;; and this notice must be preserved on all copies.
;; A version of time that gets rid of the insignificant parts of the
;; display-time line "[0]", as well as the 0.00 if the load is that
;; low. Optionally, setting the variables 'display-newmail-beep will
;; print a message when it first notices that mail has arrived. Using
;; display-mail-only will get rid of all load and time information,
;; just prints the "Mail" flag when you have some.
(defvar display-time-process nil)
(defvar display-time-no-load nil
"*If non-NIL, do not display any load information.")
(defvar display-no-mail nil
"*If non-NIL, do not display Mail flag at any time.")
(defvar display-mail-only nil
"*Only print the Mail flag not the time or load.")
(defvar display-newmail-beep nil
"*Print a message when new mail first arrives.")
(defvar display-gohome-msg "Go Home"
"*Add this message to the display-time-string when display-gohome-time.")
(defvar display-gohome-time nil
"*Add the display-gohome-msg to the display-time-string.
The value of the variable may be a number or string representing military time
(e.g., 1800 is 6pm, if it is a string it may optionally have a ':'
between the hours and the minutes). Or it may be an association list
between the 'day of the week', 'military time', and optional
gohome-msg of the form:
(setq display-gohome-time '((\"Mon\" 1900) (\"Tue\" 1830 \"Tue meeting\")))
Which would print the Go Home message only on Monday at 7pm and
Tuesday at 6:30pm.")
(defvar display-time-interval 60
"*Seconds between updates of time in the mode line.")
(defvar display-time-string nil)
(defun display-time ()
"Display current time and load level in mode line of each buffer.
Updates automatically every minute.
If display-time-day-and-date is non-nil, the current day and date
are displayed as well."
(interactive)
(let ((live (and display-time-process
(eq (process-status display-time-process) 'run))))
(if (not live)
(progn
(if display-time-process
(delete-process display-time-process))
(or global-mode-string (setq global-mode-string '("")))
(or (memq 'display-time-string global-mode-string)
(setq global-mode-string
(append global-mode-string '(display-time-string))))
(setq display-time-string "")
(setq display-time-process
(start-process "display-time" nil
"wakeup"
(int-to-string display-time-interval)))
(process-kill-without-query display-time-process)
(set-process-sentinel display-time-process 'display-time-sentinel)
(set-process-filter display-time-process 'display-time-filter)))))
(defun display-time-sentinel (proc reason)
(or (eq (process-status proc) 'run)
(setq display-time-string ""))
;; Force mode-line updates
(save-excursion (set-buffer (other-buffer)))
(set-buffer-modified-p (buffer-modified-p))
(sit-for 0))
(defun military-time (mil-string)
(if (not (stringp mil-string))
mil-string
(if (string-match ":" mil-string)
(string-to-int
(concat (substring mil-string 0 (match-beginning 0))
(substring mil-string (1+ (match-beginning 0)))))
(string-to-int mil-string))))
(defun display-time-filter (proc string)
(setq display-time-string
(mapconcat (function (lambda (s)
(if s
(concat s " ")
nil)))
(list
(if (and display-mail-only
(null display-gohome-time))
nil
(let ((time (current-time-string))
hour pm)
(concat
(if display-gohome-time
(let ((gohome-time (military-time
display-gohome-time))
(right-now
(string-to-int
(concat (substring (current-time-string)
11 13)
(substring (current-time-string)
14 16))))
(msg display-gohome-msg)
stop-time)
(if (listp display-gohome-time)
(let ((elt (assoc
(substring
(current-time-string) 0 3)
display-gohome-time)))
(setq gohome-time (nth 1 elt)
msg (nth 2 elt)
stop-time (nth 3 elt))
(if (not (stringp msg))
(setq msg display-gohome-msg))
(if (stringp gohome-time)
(setq gohome-time
(military-time gohome-time)))
(if (not stop-time)
(setq stop-time 2400))
))
(if (numberp gohome-time)
(cond ((= gohome-time right-now)
(message "Time to leave!")
(beep t)
(concat "*** " msg " *** "))
((and (< gohome-time right-now)
(>= stop-time right-now))
(concat msg " "))))))
(or display-mail-only
(progn
(setq hour (read (substring time 11 13))
pm (>= hour 12))
(if (> hour 12)
(setq hour (- hour 12))
(if (= hour 0)
(setq hour 12)))
(format "%s%d:%s%s"
(if display-time-day-and-date
(concat (substring time 0 11) " ")
"")
hour (substring time 14 16)
(if pm "pm" "am")))))))
(and (not display-time-no-load)
(not display-mail-only)
(let ((load (condition-case ()
(car (load-average))
(error 0))))
(if (= load 0)
""
(format "%d.%02d" (/ load 100) (% load 100)))))
(if (not display-no-mail)
(let ((mail-spool-file (concat rmail-spool-directory
(or (getenv "LOGNAME")
(getenv "USER")
(user-login-name)))))
(if (and (file-exists-p mail-spool-file)
;; file not empty?
(> (nth 7 (file-attributes mail-spool-file)) 0))
(prog1 "Mail"
(and display-newmail-beep
(not
(let ((data (match-data)))
(unwind-protect
(string-match "Mail"
display-time-string)
(store-match-data data))))
(progn
(message "You have mail waiting...")
(beep t))))
""))))
""))
;; Force redisplay of all buffers' mode lines to be considered.
(save-excursion (set-buffer (other-buffer)))
(set-buffer-modified-p (buffer-modified-p))
;; Do redisplay right now, if no input pending.
(sit-for 0))
(provide 'my-time)
Technical Details
Message-ID:
<199206101713.AA15318@kosciusko.NSD.3Com.COM>Path:
arc1-ca.pugleaf.net!sparky!uunet!cis.ohio-state.edu!nsd.3com.com!mdbReferences:
<1992Jun10.105439@lglsun.epfl.ch>Show Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: fc7ee,d99dcb9aff2721a9 X-Google-Attributes: gidfc7ee,public X-Google-ArrivalTime: 1992-06-10 10:33:08 PST Newsgroups: gnu.epoch.misc Path: arc1-ca.pugleaf.net!sparky!uunet!cis.ohio-state.edu!nsd.3com.com!mdb From: mdb@nsd.3com.com (Mark D. Baushke) Subject: Re: How do I get rid of "Mail" Message-ID: <199206101713.AA15318@kosciusko.NSD.3Com.COM> Sender: daemon@cis.ohio-state.edu Organization: 3Com, 5400 Bayfront Plaza, Santa Clara, CA 95052-8145 References: <1992Jun10.105439@lglsun.epfl.ch> Distribution: gnu Date: Wed, 10 Jun 1992 03:13:00 GMT Lines: 308