crolling-and-added-page-up-.patch" Content-Transfer-Encoding: quoted-printable =46rom cbf97d8d37e737add83d925ab03016a2496e42e1 Mon Sep 17 00:00:00 2001 From: Morgan Veyret Date: Fri, 20 Feb 2009 22:42:36 +0100 Subject: [PATCH 06/14] Fixed small bug in menu scrolling and added page-{up= ,down} support. This adds two more ways to move selection in the menu: - page-up/down which simply gets you to your current position +/- *menu-maximum-height* - scroll-up/down which gets you to your current position +/- *menu-scrolling-step* --- menu.lisp | 34 ++++++++++++++++++++++++++++++++-- 1 files changed, 32 insertions(+), 2 deletions(-) diff --git a/menu.lisp b/menu.lisp index f163a15..4fc69b4 100644 --- a/menu.lisp +++ b/menu.lisp @@ -38,10 +38,17 @@ (define-key m (kbd "C-p") 'menu-up) (define-key m (kbd "Up") 'menu-up) (define-key m (kbd "k") 'menu-up) + (define-key m (kbd "S-Up") 'menu-scroll-up) + (define-key m (kbd "SunPageUp") 'menu-page-up) + (define-key m (kbd "K") 'menu-page-up) =20 (define-key m (kbd "C-n") 'menu-down) (define-key m (kbd "Down") 'menu-down) (define-key m (kbd "j") 'menu-down) + (define-key m (kbd "S-Down") 'menu-scroll-down) + (define-key m (kbd "SunPageDown") 'menu-page-down) + (define-key m (kbd "J") 'menu-page-down) + (define-key m (kbd "C-g") 'menu-abort) (define-key m (kbd "ESC") 'menu-abort) (define-key m (kbd "RET") 'menu-finish) @@ -93,8 +100,8 @@ on current view and new selection." (+ (menu-state-view-start menu) *menu-scrolling-step*)) (setf (menu-state-view-end menu) - (+ (menu-state-selected menu) - *menu-scrolling-step*)))))))) + (+ (menu-state-view-end menu) + *menu-scrolling-step*)))))))) =20 (defun menu-up (menu) (setf *current-menu-input* "") @@ -106,6 +113,29 @@ on current view and new selection." (incf (menu-state-selected menu)) (bound-check-menu menu)) =20 +(defun menu-scroll-up (menu) + (setf *current-menu-input* "") + (decf (menu-state-selected menu) *menu-scrolling-step*) + (bound-check-menu menu)) + +(defun menu-scroll-down (menu) + (setf *current-menu-input* "") + (incf (menu-state-selected menu) *menu-scrolling-step*) + (bound-check-menu menu)) + +(defun menu-page-up (menu) + (setf *current-menu-input* "") + (decf (menu-state-selected menu) *menu-maximum-height*) + (let ((*menu-scrolling-step* *menu-maximum-height*)) + (bound-check-menu menu))) + +(defun menu-page-down (menu) + (setf *current-menu-input* "") + (incf (menu-state-selected menu) *menu-maximum-height*) + (let ((*menu-scrolling-step* *menu-maximum-height*)) + (bound-check-menu menu))) + + (defun menu-finish (menu) (throw :menu-quit (nth (menu-state-selected menu) (menu-state-table menu= )))) =20 --=20 1.7.4