Make "m" key in Info mode default to the current menu item, if there is one.
authorArthur Gleckler <edu/mit/csail/zurich/arthur>
Fri, 18 Oct 1991 16:03:02 +0000 (16:03 +0000)
committerArthur Gleckler <edu/mit/csail/zurich/arthur>
Fri, 18 Oct 1991 16:03:02 +0000 (16:03 +0000)
v7/src/edwin/info.scm
v7/src/edwin/prompt.scm

index 9ed047862741bdaff858d35a4fb7a9338e548824..6949d88fbe21be14323ebff0057fc010fcb92030 100644 (file)
@@ -1,6 +1,6 @@
 ;;; -*-Scheme-*-
 ;;;
-;;;    $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/edwin/info.scm,v 1.106 1991/10/04 06:14:14 cph Exp $
+;;;    $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/edwin/info.scm,v 1.107 1991/10/18 16:02:39 arthur Exp $
 ;;;
 ;;;    Copyright (c) 1986, 1989-91 Massachusetts Institute of Technology
 ;;;
@@ -393,7 +393,13 @@ except for \\[info-cease-edit] to return to Info."
        (menu-item-name
        (make-mark
         (mark-group menu)
-        (prompt-for-alist-value "Menu item" (collect-menu-items menu))))))))
+        (let ((current-item (current-menu-item (current-point))))
+          (if current-item
+              (prompt-for-alist-value "Menu item"
+                                      (collect-menu-items menu)
+                                      (menu-item-name current-item))
+              (prompt-for-alist-value "Menu item"
+                                      (collect-menu-items menu))))))))))
 
 (define (nth-menu-item n)
   (lambda ()
@@ -461,6 +467,17 @@ except for \\[info-cease-edit] to return to Info."
   (and (re-search-forward menu-item-regexp mark (group-end mark) false)
        (re-match-start 1)))
 
+(define (current-menu-item mark)
+  (let ((menu (find-menu))
+       (start (mark-1+ (line-start mark 0) 'LIMIT)))
+    (and menu
+        (mark> start menu)
+        (re-search-forward menu-item-regexp
+                           (mark-1+ (line-start mark 0) 'LIMIT)
+                           (line-end mark 0)
+                           false)
+        (re-match-start 1))))
+
 (define (menu-item-name item)
   (let ((colon (char-search-forward #\: item (line-end item 0) false)))
     (if (not colon)
index f28d3135bc3d101187c0abf0802fc2cb3a9460c0..7f818ea3e9897ea2e4b78fe90dd7d16b87db2b99 100644 (file)
@@ -1,6 +1,6 @@
 ;;; -*-Scheme-*-
 ;;;
-;;;    $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/edwin/prompt.scm,v 1.148 1991/08/06 15:54:57 arthur Exp $
+;;;    $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/edwin/prompt.scm,v 1.149 1991/10/18 16:03:02 arthur Exp $
 ;;;
 ;;;    Copyright (c) 1986, 1989-91 Massachusetts Institute of Technology
 ;;;
                                                  string-table
                                                  require-match?)))
 
-(define (prompt-for-alist-value prompt alist)
+(define (prompt-for-alist-value prompt alist #!optional default)
   (fluid-let ((map-name/external->internal identity-procedure)
              (map-name/internal->external identity-procedure))
-    (prompt-for-string-table-value prompt
-                                  false
-                                  'NO-DEFAULT
-                                  (alist->string-table alist)
-                                  true)))
+    (if (default-object? default)
+       (prompt-for-string-table-value prompt
+                                      false
+                                      'NO-DEFAULT
+                                      (alist->string-table alist)
+                                      true)
+       (prompt-for-string-table-value prompt
+                                      default
+                                      'VISIBLE-DEFAULT
+                                      (alist->string-table alist)
+                                      true))))
 
 (define (prompt-for-command prompt)
   (fluid-let ((map-name/external->internal editor-name/external->internal)