From eb3d8d2d1e4cd66c53a560c56dcb4f6a069433c4 Mon Sep 17 00:00:00 2001 From: Bart Massey Date: Fri, 18 Apr 2008 01:55:01 -0700 Subject: [PATCH] fixed to use common infrastructure, handle more cases, narrow/widen on entry/exit --- slide-mode.el | 53 ++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 40 insertions(+), 13 deletions(-) diff --git a/slide-mode.el b/slide-mode.el index afecfa9..1bd832a 100644 --- a/slide-mode.el +++ b/slide-mode.el @@ -13,21 +13,16 @@ (defun slide-build-mode-map () "Build the mode map for slide mode." (let ((map (make-keymap))) - (define-key map "\C-n" 'next-slide) + (define-key map "\C-c\C-n" 'next-slide) + (define-key map "\C-c\C-p" 'previous-slide) map)) -;; define the mode -(define-minor-mode slide-mode - "Toggle minor mode for display of slides." - nil " Slides" (slide-build-mode-map) - t) - -;; move to the next slide -(defun next-slide () - "Go to next slide." - (interactive) - (widen) - (if (re-search-forward "^\C-l$" (point-max) t) +;; Actually display the current slide. +;; Must be widened at entry, +;; will be narrowed at exit. +(defun display-slide () + (setq here (point)) + (if (re-search-backward "^\C-l$" (point-min) t) (beginning-of-line 2) (goto-char (point-min))) (setq start (point)) @@ -38,3 +33,35 @@ (goto-char (point-min)) (recenter) (goto-char (point-max))) + +;; Define the mode. +;; When mode is activated, +;; narrow on current slide. +;; When mode is deactivated, +;; widen. +(define-minor-mode slide-mode + "Toggle minor mode for display of slides." + nil " Slides" (slide-build-mode-map) + (widen) + (if slide-mode + (display-slide))) + +;; move to the next slide +(defun next-slide () + "Go to next slide." + (interactive) + (widen) + (if (re-search-forward "^\C-l$" (point-max) t) + (progn + (beginning-of-line 2) + (display-slide)))) + +;; move to the previous slide +(defun previous-slide () + "Go to previous slide." + (interactive) + (widen) + (if (re-search-backward "^\C-l$" (point-min) t) + (progn + (beginning-of-line nil) + (display-slide))))