Mercurial > emacs
annotate lisp/gnus/gnus-audio.el @ 103846:d4545e05c853
(Top): Info can be read from other places than Emacs.
Don't print the copying notice twice in the printed version.
Update the menu and detailmenu.
(Preface): The meaning of "on-line" has changed.
Correct name for "Common Problems" chapter.
(Distrib): Update FSF shop URL.
(Intro): Showing two files at once is not so exciting.
author | Glenn Morris <rgm@gnu.org> |
---|---|
date | Sat, 11 Jul 2009 02:49:45 +0000 |
parents | a9dc0e7c3f2b |
children | 1d1d5d9bd884 |
rev | line source |
---|---|
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
52401
diff
changeset
|
1 ;;; gnus-audio.el --- Sound effects for Gnus |
64754
fafd692d1e40
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64085
diff
changeset
|
2 |
74547 | 3 ;; Copyright (C) 1996, 2000, 2001, 2002, 2003, 2004, |
100908 | 4 ;; 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. |
17493 | 5 |
6 ;; Author: Steven L. Baur <steve@miranova.com> | |
32214 | 7 ;; Keywords: news, mail, multimedia |
17493 | 8 |
9 ;; This file is part of GNU Emacs. | |
10 | |
94662
f42ef85caf91
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93975
diff
changeset
|
11 ;; GNU Emacs is free software: you can redistribute it and/or modify |
17493 | 12 ;; it under the terms of the GNU General Public License as published by |
94662
f42ef85caf91
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93975
diff
changeset
|
13 ;; the Free Software Foundation, either version 3 of the License, or |
f42ef85caf91
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93975
diff
changeset
|
14 ;; (at your option) any later version. |
17493 | 15 |
16 ;; GNU Emacs is distributed in the hope that it will be useful, | |
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 ;; GNU General Public License for more details. | |
20 | |
21 ;; You should have received a copy of the GNU General Public License | |
94662
f42ef85caf91
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93975
diff
changeset
|
22 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
17493 | 23 |
24 ;;; Commentary: | |
32214 | 25 |
17493 | 26 ;; This file provides access to sound effects in Gnus. |
32214 | 27 ;; This file is partially stripped to support earcons.el. |
28 | |
17493 | 29 ;;; Code: |
30 | |
32214 | 31 (require 'nnheader) |
17493 | 32 |
32214 | 33 (defgroup gnus-audio nil |
34 "Playing sound in Gnus." | |
35 :version "21.1" | |
36 :group 'gnus-visual | |
37 :group 'multimedia) | |
17493 | 38 |
39 (defvar gnus-audio-inline-sound | |
32214 | 40 (or (if (fboundp 'device-sound-enabled-p) |
41 (device-sound-enabled-p)) ; XEmacs | |
42 (fboundp 'play-sound)) ; Emacs 21 | |
43 "Non-nil means try to play sounds without using an external program.") | |
44 | |
45 (defcustom gnus-audio-directory (nnheader-find-etc-directory "sounds") | |
46 "The directory containing the Sound Files." | |
34327
51fb7a49a44b
(gnus-audio-directory): Fix :type.
Dave Love <fx@gnu.org>
parents:
32214
diff
changeset
|
47 :type '(choice directory (const nil)) |
32214 | 48 :group 'gnus-audio) |
17493 | 49 |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
52401
diff
changeset
|
50 (defcustom gnus-audio-au-player (executable-find "play") |
32214 | 51 "Executable program for playing sun AU format sound files." |
52 :group 'gnus-audio | |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
52401
diff
changeset
|
53 :type '(choice file (const nil))) |
17493 | 54 |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
52401
diff
changeset
|
55 (defcustom gnus-audio-wav-player (executable-find "play") |
32214 | 56 "Executable program for playing WAV files." |
57 :group 'gnus-audio | |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
52401
diff
changeset
|
58 :type '(choice file (const nil))) |
17493 | 59 |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
17493
diff
changeset
|
60 ;;; The following isn't implemented yet. Wait for Millennium Gnus. |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
61 ;;(defvar gnus-audio-effects-enabled t |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
62 ;; "When t, Gnus will use sound effects.") |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
63 ;;(defvar gnus-audio-enable-hooks nil |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
64 ;; "Functions run when enabling sound effects.") |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
65 ;;(defvar gnus-audio-disable-hooks nil |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
66 ;; "Functions run when disabling sound effects.") |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
67 ;;(defvar gnus-audio-theme-song nil |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
68 ;; "Theme song for Gnus.") |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
69 ;;(defvar gnus-audio-enter-group nil |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
70 ;; "Sound effect played when selecting a group.") |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
71 ;;(defvar gnus-audio-exit-group nil |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
72 ;; "Sound effect played when exiting a group.") |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
73 ;;(defvar gnus-audio-score-group nil |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
74 ;; "Sound effect played when scoring a group.") |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
75 ;;(defvar gnus-audio-busy-sound nil |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
76 ;; "Sound effect played when going into a ... sequence.") |
17493 | 77 |
78 | |
79 ;;;###autoload | |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
80 ;;(defun gnus-audio-enable-sound () |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
81 ;; "Enable Sound Effects for Gnus." |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
82 ;; (interactive) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
83 ;; (setq gnus-audio-effects-enabled t) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
84 ;; (gnus-run-hooks gnus-audio-enable-hooks)) |
17493 | 85 |
86 ;;;###autoload | |
87 ;(defun gnus-audio-disable-sound () | |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
88 ;; "Disable Sound Effects for Gnus." |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
89 ;; (interactive) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
90 ;; (setq gnus-audio-effects-enabled nil) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
91 ;; (gnus-run-hooks gnus-audio-disable-hooks)) |
17493 | 92 |
93 ;;;###autoload | |
94 (defun gnus-audio-play (file) | |
32214 | 95 "Play a sound FILE through the speaker." |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
52401
diff
changeset
|
96 (interactive "fSound file name: ") |
17493 | 97 (let ((sound-file (if (file-exists-p file) |
98 file | |
32214 | 99 (expand-file-name file gnus-audio-directory)))) |
17493 | 100 (when (file-exists-p sound-file) |
32214 | 101 (cond ((and gnus-audio-inline-sound |
102 (condition-case nil | |
103 ;; Even if we have audio, we may fail with the | |
104 ;; wrong sort of sound file. | |
105 (progn (play-sound-file sound-file) | |
106 t) | |
107 (error nil)))) | |
108 ;; If we don't have built-in sound, or playing it failed, | |
109 ;; try with external program. | |
110 ((equal "wav" (file-name-extension sound-file)) | |
111 (call-process gnus-audio-wav-player | |
112 sound-file | |
113 0 | |
114 nil | |
115 sound-file)) | |
116 ((equal "au" (file-name-extension sound-file)) | |
117 (call-process gnus-audio-au-player | |
118 sound-file | |
119 0 | |
120 nil | |
121 sound-file)))))) | |
17493 | 122 |
123 | |
124 ;;; The following isn't implemented yet, wait for Red Gnus | |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
125 ;;(defun gnus-audio-startrek-sounds () |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
126 ;; "Enable sounds from Star Trek the original series." |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
127 ;; (interactive) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
128 ;; (setq gnus-audio-busy-sound "working.au") |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
129 ;; (setq gnus-audio-enter-group "bulkhead_door.au") |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
130 ;; (setq gnus-audio-exit-group "bulkhead_door.au") |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
131 ;; (setq gnus-audio-score-group "ST_laser.au") |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
132 ;; (setq gnus-audio-theme-song "startrek.au") |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
133 ;; (add-hook 'gnus-select-group-hook 'gnus-audio-startrek-select-group) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
134 ;; (add-hook 'gnus-exit-group-hook 'gnus-audio-startrek-exit-group)) |
17493 | 135 ;;;*** |
136 | |
137 (defvar gnus-startup-jingle "Tuxedomoon.Jingle4.au" | |
138 "Name of the Gnus startup jingle file.") | |
139 | |
140 (defun gnus-play-jingle () | |
141 "Play the Gnus startup jingle, unless that's inhibited." | |
142 (interactive) | |
143 (gnus-audio-play gnus-startup-jingle)) | |
144 | |
145 (provide 'gnus-audio) | |
146 | |
147 (run-hooks 'gnus-audio-load-hook) | |
148 | |
93975
1e3a407766b9
Fix up comment convention on the arch-tag lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
79708
diff
changeset
|
149 ;; arch-tag: 6f129e78-3416-4fc9-973f-6cf5ac8d654b |
17493 | 150 ;;; gnus-audio.el ends here |