diff options
| author | Stefan Kangas | 2019-10-17 19:38:06 +0200 |
|---|---|---|
| committer | Stefan Kangas | 2019-10-17 19:39:29 +0200 |
| commit | 0a70727c4024ac6a66c378df52e37808ee2d7993 (patch) | |
| tree | 306806efbfe092f1076c129b0e696ce9c94bc5cb | |
| parent | 34923412b5a5888f0f50b3009a6225670be4c026 (diff) | |
| download | emacs-0a70727c4024ac6a66c378df52e37808ee2d7993.tar.gz emacs-0a70727c4024ac6a66c378df52e37808ee2d7993.zip | |
Port snake menu to Emacs
* lisp/play/snake.el (snake--menu-def): New constant.
(snake-mode-menu, snake-null-menu): Add a menu.
(snake-mode): Remove XEmacs compat code.
(snake-mode-map, snake-null-map): Add docstring.
| -rw-r--r-- | lisp/play/snake.el | 42 |
1 files changed, 29 insertions, 13 deletions
diff --git a/lisp/play/snake.el b/lisp/play/snake.el index d0f94579062..5e8a718f5a1 100644 --- a/lisp/play/snake.el +++ b/lisp/play/snake.el | |||
| @@ -186,12 +186,39 @@ and then start moving it leftwards.") | |||
| 186 | (define-key map "\C-f" 'snake-move-right) | 186 | (define-key map "\C-f" 'snake-move-right) |
| 187 | (define-key map "\C-p" 'snake-move-up) | 187 | (define-key map "\C-p" 'snake-move-up) |
| 188 | (define-key map "\C-n" 'snake-move-down) | 188 | (define-key map "\C-n" 'snake-move-down) |
| 189 | map)) | 189 | map) |
| 190 | "Keymap for Snake games.") | ||
| 190 | 191 | ||
| 191 | (defvar snake-null-map | 192 | (defvar snake-null-map |
| 192 | (let ((map (make-sparse-keymap 'snake-null-map))) | 193 | (let ((map (make-sparse-keymap 'snake-null-map))) |
| 193 | (define-key map "n" 'snake-start-game) | 194 | (define-key map "n" 'snake-start-game) |
| 194 | map)) | 195 | map) |
| 196 | "Keymap for finished Snake games.") | ||
| 197 | |||
| 198 | (defconst snake--menu-def | ||
| 199 | '("Snake" | ||
| 200 | ["Start new game" snake-start-game | ||
| 201 | :help "Start a new Snake game"] | ||
| 202 | ["End game" snake-end-game | ||
| 203 | :active (snake-active-p) | ||
| 204 | :help "End the current Snake game"] | ||
| 205 | ["Pause" snake-pause-game | ||
| 206 | :active (and (snake-active-p) (not snake-paused)) | ||
| 207 | :help "Pause running Snake game"] | ||
| 208 | ["Resume" snake-pause-game | ||
| 209 | :active (and (snake-active-p) snake-paused) | ||
| 210 | :help "Resume paused Snake game"]) | ||
| 211 | "Menu for `snake'. Used to initialize menus.") | ||
| 212 | |||
| 213 | (easy-menu-define | ||
| 214 | snake-mode-menu snake-mode-map | ||
| 215 | "Menu for running Snake games." | ||
| 216 | snake--menu-def) | ||
| 217 | |||
| 218 | (easy-menu-define | ||
| 219 | snake-null-menu snake-null-map | ||
| 220 | "Menu for finished Snake games." | ||
| 221 | snake--menu-def) | ||
| 195 | 222 | ||
| 196 | ;; ;;;;;;;;;;;;;;;; game functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | 223 | ;; ;;;;;;;;;;;;;;;; game functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
| 197 | 224 | ||
| @@ -368,17 +395,6 @@ Argument SNAKE-BUFFER is the name of the buffer." | |||
| 368 | 395 | ||
| 369 | (use-local-map snake-null-map) | 396 | (use-local-map snake-null-map) |
| 370 | 397 | ||
| 371 | (unless (featurep 'emacs) | ||
| 372 | (setq mode-popup-menu | ||
| 373 | '("Snake Commands" | ||
| 374 | ["Start new game" snake-start-game] | ||
| 375 | ["End game" snake-end-game | ||
| 376 | (snake-active-p)] | ||
| 377 | ["Pause" snake-pause-game | ||
| 378 | (and (snake-active-p) (not snake-paused))] | ||
| 379 | ["Resume" snake-pause-game | ||
| 380 | (and (snake-active-p) snake-paused)]))) | ||
| 381 | |||
| 382 | (setq gamegrid-use-glyphs snake-use-glyphs-flag) | 398 | (setq gamegrid-use-glyphs snake-use-glyphs-flag) |
| 383 | (setq gamegrid-use-color snake-use-color-flag) | 399 | (setq gamegrid-use-color snake-use-color-flag) |
| 384 | 400 | ||