This file is indexed.

/usr/share/emacs/site-lisp/chess/chess-sound.el is in emacs-chess 2.0b6-1.1ubuntu1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; This is very similar to chess-announce, except it uses specific
;; .WAV files instead of text-to-speech.
;;

(require 'chess-game)

(defgroup chess-sound nil
  "Code to play specific sounds when announcing chess moves."
  :group 'chess)

(defcustom chess-sound-directory
  (expand-file-name "sounds"
		    (file-name-directory
		     (or load-file-name buffer-file-name)))
  "The directory where chess sounds can be found."
  :type 'directory
  :group 'chess-sound)

(defcustom chess-sound-play-function (if (fboundp 'play-sound-file)
					 'play-sound-file
				       'chess-sound-play)
  "Non-nil if chess-sound should play sounds ."
  :type 'function
  :group 'chess-sound)

(defcustom chess-sound-program (or (executable-find "esdplay")
				   (executable-find "play"))
  "Program used to play sounds, if `play-sound-file' does not exist."
  :type 'file
  :group 'chess-sound)

(defcustom chess-sound-args nil
  "Additional args to pass to `chess-sound-program', before the .WAV file."
  :type '(repeat string)
  :group 'chess-sound)

(defcustom chess-sound-my-moves nil
  "If non-nil, plays the move.wav sound whenever you make a move."
  :type 'boolean
  :group 'chess-sound)

(defsubst chess-sound (file)
  (funcall chess-sound-play-function
	   (expand-file-name (concat file ".wav")
			     chess-sound-directory)))

(defsubst chess-sound-play (file)
  (apply 'call-process chess-sound-program
	 nil nil nil (append chess-sound-args (list file))))

(defun chess-sound-handler (game event &rest args)
  (cond
   ((eq event 'initialize)
    (and (file-directory-p chess-sound-directory)
	 (file-readable-p (expand-file-name "move.wav"
					    chess-sound-directory))
	 (or (eq chess-sound-play-function 'play-sound-file)
	     (and chess-sound-program
		  (file-executable-p chess-sound-program)))))

   ((eq event 'move)
    (let* ((ply (chess-game-ply game (1- (chess-game-index game))))
	   (pos (chess-ply-pos ply)))
      (if (eq (chess-game-data game 'my-color)
	      (chess-pos-side-to-move pos))
	  (if chess-sound-my-moves
	      (chess-sound "move"))
	(let* ((source (chess-ply-source ply))
	       (target (chess-ply-target ply))
	       (s-piece (and source (chess-pos-piece pos source)))
	       (t-piece (and target (chess-pos-piece pos target)))
	       (which (chess-ply-keyword ply :which))
	       text)
	  (cond
	   ((chess-ply-keyword ply :castle)
	    (chess-sound "O-O"))
	   ((chess-ply-keyword ply :long-castle)
	    (chess-sound "O-O-O"))
	   ((and s-piece t-piece (= t-piece ? ) target)
	    (if which
		(chess-sound (char-to-string which)))
	    (chess-sound (format "%c_" (downcase s-piece)))
	    (chess-sound (chess-index-to-coord target)))
	   ((and s-piece t-piece target)
	    (if which
		(chess-sound (char-to-string which)))
	    (chess-sound (format "%c_" (downcase s-piece)))
	    (chess-sound "x_")
	    (chess-sound (format "%c_" (downcase t-piece)))
	    (chess-sound (chess-index-to-coord target))))

	  (if (chess-ply-keyword ply :promote)
	      (chess-sound
	       (format "%c_" (downcase
			      (chess-ply-keyword ply :promote)))))
	  (if (chess-ply-keyword ply :en-passant)
	      (chess-sound "enpassant"))
	  (if (chess-ply-keyword ply :check)
	      (chess-sound "+_"))
	  (if (chess-ply-keyword ply :checkmate)
	      (chess-sound "#_"))
	  (if (chess-ply-keyword ply :stalemate)
	      (chess-sound "smate"))))))))

(provide 'chess-sound)

;;; chess-sound.el ends here