This file is indexed.

/usr/share/emacs/site-lisp/chess/chess-module.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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Basic module support code underlying all chess.el modules
;;

(require 'chess-game)

(defvar chess-module-game nil)
(defvar chess-module-event-handler nil)
(defvar chess-module-leader nil)

(make-variable-buffer-local 'chess-module-game)
(make-variable-buffer-local 'chess-module-event-handler)
(make-variable-buffer-local 'chess-module-leader)

(chess-message-catalog 'english
  '((no-such-module . "There is no module named '%s'")))

(defmacro chess-with-current-buffer (buffer &rest body)
  `(let ((buf ,buffer))
     (if buf
	 (with-current-buffer buf
	   ,@body)
       ,@body)))

(defun chess-module-create (derived game &optional buffer-name
				    &rest ctor-args)
  (let* ((name (symbol-name derived))
	 handler buffer)
    (unless (and (require derived nil t)
		 (setq handler (intern-soft (concat name "-handler"))))
      (chess-error 'no-such-module name))
    (with-current-buffer (generate-new-buffer (or buffer-name
						  (format " *%s*" name)))
      (if (not (apply handler game 'initialize ctor-args))
	  (ignore
	   (kill-buffer (current-buffer)))
	(add-hook 'kill-buffer-hook 'chess-module-destroy nil t)
	(setq chess-module-event-handler handler)
	(chess-module-set-game* nil game)
	(current-buffer)))))

(defun chess-module-game (module)
  (chess-with-current-buffer module
    chess-module-game))

(defun chess-module-game-index (module)
  (chess-with-current-buffer module
    (chess-game-index chess-module-game)))

(defun chess-module-detach-game (module)
  (chess-with-current-buffer module
    (chess-game-remove-hook chess-module-game
			    'chess-module-event-handler
			    (or module (current-buffer)))
    ;; if we are the leader, shutdown the game we were attached to
    ;; previously
    (if chess-module-leader
	(chess-game-run-hooks chess-module-game 'destroy))))

(defun chess-module-set-game (module game &optional no-setup)
  (chess-with-current-buffer module
    (let ((chess-game-inhibit-events no-setup))
      (chess-game-copy-game chess-module-game game))))

(defun chess-module-set-game* (module game)
  (chess-with-current-buffer module
    (assert game)
    (if chess-module-game
	(chess-module-detach-game nil))
    (setq chess-module-game game)
    (chess-game-add-hook game 'chess-module-event-handler
			 (or module (current-buffer)))))

(defsubst chess-module-leader-p (module)
  (chess-with-current-buffer module
    chess-module-leader))

(defsubst chess-module-set-leader (module)
  (chess-with-current-buffer module
    (setq chess-module-leader t)))

(defsubst chess-module-clear-leader (module)
  (chess-with-current-buffer module
    (setq chess-module-leader nil)))

(defun chess-module-destroy (&optional module)
  (let ((buf (or module (current-buffer))))
    (when (buffer-live-p buf)
      (with-current-buffer buf
	(remove-hook 'kill-buffer-hook 'chess-module-destroy t)
	(chess-module-detach-game nil))
      (kill-buffer buf))))

(defun chess-module-event-handler (game object event &rest args)
  (with-current-buffer object
    (apply chess-module-event-handler game event args)
    (if (eq event 'destroy)
	(chess-module-destroy nil))))

(provide 'chess-module)

;;; chess-module.el ends here