comparison lisp/menubar.el @ 462:0784d089fdc9 r21-2-46

Import from CVS: tag r21-2-46
author cvs
date Mon, 13 Aug 2007 11:44:37 +0200
parents 1ccc32a20af4
children 7039e6323819
comparison
equal deleted inserted replaced
461:120ed4009e51 462:0784d089fdc9
521 (context-menu-items 521 (context-menu-items
522 (apply 'append (mapcar #'(lambda (extent) 522 (apply 'append (mapcar #'(lambda (extent)
523 (extent-property extent 'context-menu)) 523 (extent-property extent 'context-menu))
524 context-extents)))) 524 context-extents))))
525 (popup-menu 525 (popup-menu
526 (cond ((and global-popup-menu mode-popup-menu) 526 (progn
527 ;; Merge global-popup-menu and mode-popup-menu 527 ;; Merge global-popup-menu and mode-popup-menu
528 (check-menu-syntax mode-popup-menu) 528 (and mode-popup-menu (check-menu-syntax mode-popup-menu))
529 (let* ((title (car mode-popup-menu)) 529 (let* ((mode-title (and (stringp (car mode-popup-menu))
530 (items (cdr mode-popup-menu)) 530 (car mode-popup-menu)))
531 (mode-items (if mode-title (cdr mode-popup-menu)
532 mode-popup-menu))
533 (global-title (and (stringp (car global-popup-menu))
534 (car global-popup-menu)))
535 (global-items (if global-title (cdr global-popup-menu)
536 global-popup-menu))
531 mode-filters) 537 mode-filters)
532 ;; Strip keywords from local menu for attaching them at the top 538 ;; Strip keywords from local menu for attaching them at the top
533 (while (and items 539 (while (and mode-items
534 (keywordp (car items))) 540 (keywordp (car mode-items)))
535 ;; Push both keyword and its argument. 541 ;; Push both keyword and its argument.
536 (push (pop items) mode-filters) 542 (push (pop mode-items) mode-filters)
537 (push (pop items) mode-filters)) 543 (push (pop mode-items) mode-filters))
538 (setq mode-filters (nreverse mode-filters)) 544 (setq mode-filters (nreverse mode-filters))
539 ;; If mode-filters contains a keyword already present in 545 ;; If mode-filters contains a keyword already present in
540 ;; `global-popup-menu', you will probably lose. 546 ;; `global-popup-menu', you will probably lose.
541 (append (list (car global-popup-menu)) 547 (append (and popup-menu-titles
548 (cond (mode-title (list mode-title))
549 (global-title (list global-title))
550 (t "")))
542 mode-filters 551 mode-filters
543 (cdr global-popup-menu) 552 context-menu-items
544 '("---" "---") 553 (and context-menu-items mode-items '("---"))
545 (if popup-menu-titles (list title)) 554 mode-items
546 (if popup-menu-titles '("---" "---")) 555 (and (or context-menu-items mode-items)
547 items 556 global-items '("---" "---"))
548 context-menu-items))) 557 (and global-title (list global-title))
549 (t 558 global-items
550 (append 559 ))))
551 (or mode-popup-menu
552 global-popup-menu
553 (error "No menu defined in this buffer"))
554 context-menu-items))))
555 560
556 (while (popup-up-p) 561 (while (popup-up-p)
557 (dispatch-event (next-event))) 562 (dispatch-event (next-event)))
558 563
559 )) 564 ))