X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/8a1f4a98c1b8e3abaf1b46394a88d09531ce4c2d..44caa96dc5c16cbc4ee1bb26ec880af2e2ecf9f8:/lisp/play/solitaire.el diff --git a/lisp/play/solitaire.el b/lisp/play/solitaire.el index 51d32740ca..8dcaa6144c 100644 --- a/lisp/play/solitaire.el +++ b/lisp/play/solitaire.el @@ -1,7 +1,6 @@ ;;; solitaire.el --- game of solitaire in Emacs Lisp -;; Copyright (C) 1994, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, -;; 2009, 2010, 2011 Free Software Foundation, Inc. +;; Copyright (C) 1994, 2001-2016 Free Software Foundation, Inc. ;; Author: Jan Schormann ;; Created: Fri afternoon, Jun 3, 1994 @@ -44,7 +43,7 @@ (defvar solitaire-mode-map (let ((map (make-sparse-keymap))) - (suppress-keymap map t) + (set-keymap-parent map special-mode-map) (define-key map "\C-f" 'solitaire-right) (define-key map "\C-b" 'solitaire-left) @@ -53,7 +52,6 @@ (define-key map "\r" 'solitaire-move) (define-key map [remap undo] 'solitaire-undo) (define-key map " " 'solitaire-do-check) - (define-key map "q" 'quit-window) (define-key map [right] 'solitaire-right) (define-key map [left] 'solitaire-left) @@ -89,7 +87,7 @@ ;; Solitaire mode is suitable only for specially formatted data. (put 'solitaire-mode 'mode-class 'special) -(define-derived-mode solitaire-mode nil "Solitaire" +(define-derived-mode solitaire-mode special-mode "Solitaire" "Major mode for playing Solitaire. To learn how to play Solitaire, see the documentation for function `solitaire'. @@ -128,7 +126,7 @@ the game is over, or off, if you are working on a slow machine." '(solitaire-left solitaire-right solitaire-up solitaire-down)) ;;;###autoload -(defun solitaire (arg) +(defun solitaire (_arg) "Play Solitaire. To play Solitaire, type \\[solitaire]. @@ -192,23 +190,23 @@ That's all. Here's the board after two moves: o o o -Pick your favourite shortcuts: +Pick your favorite shortcuts: \\{solitaire-mode-map}" (interactive "P") (switch-to-buffer "*Solitaire*") - (solitaire-mode) - (setq buffer-read-only t) - (setq solitaire-stones 32) - (solitaire-insert-board) - (solitaire-build-modeline) - (goto-char (point-max)) - (setq solitaire-center (search-backward ".")) - (setq buffer-undo-list (list (point))) - (set-buffer-modified-p nil)) - -(defun solitaire-build-modeline () + (let ((inhibit-read-only t)) + (solitaire-mode) + (setq buffer-read-only t) + (setq solitaire-stones 32) + (solitaire-insert-board) + (solitaire-build-mode-line) + (goto-char (point-max)) + (setq solitaire-center (search-backward ".")) + (setq buffer-undo-list (list (point))))) + +(defun solitaire-build-mode-line () (setq mode-line-format (list "" "---" 'mode-line-buffer-identification (if (< 1 solitaire-stones) @@ -355,7 +353,7 @@ which a stone will be taken away) and target." (insert ?o) (goto-char target) (setq solitaire-stones (1- solitaire-stones)) - (solitaire-build-modeline) + (solitaire-build-mode-line) (if solitaire-auto-eval (solitaire-do-check)))))) (defun solitaire-undo (arg) @@ -374,7 +372,7 @@ which a stone will be taken away) and target." (<= (solitaire-current-line) solitaire-end-y) (setq count (1+ count)))) count))) - (solitaire-build-modeline) + (solitaire-build-mode-line) (when solitaire-auto-eval (solitaire-do-check))) (defun solitaire-check () @@ -395,7 +393,7 @@ which a stone will be taken away) and target." solitaire-valid-directions))) count)))) -(defun solitaire-do-check (&optional arg) +(defun solitaire-do-check (&optional _arg) "Check for any possible moves in Solitaire." (interactive "P") (let ((moves (solitaire-check))) @@ -447,5 +445,4 @@ Seen in info on text lines." (provide 'solitaire) -;; arch-tag: 1b18ee1c-1e79-4a5b-8658-9560b82e63dd ;;; solitaire.el ends here