define-popup-menu

Title
define-popup-menu
Type
Macro
Arguments
define-popup-menu &body BODY
Package
editor
Section
メニュー
File
menu.l
固定的なポップアップメニューを定義します。

  BODY : メニューの定義を記述します。

BODYをインチキなBNFで書くと以下の様になります。

  POPUP-DEF : {MENU-ITEM}*

  MENU-ITEM : :sep
            : (:sep [TAG])
            | (:separator [TAG])
            | (:popup tag name {POPUP-DEF}*)
            | (:item tag name [COMMAND [INIT]])

  TAG       : メニュー項目を識別する任意のオブジェクトです。
              タグ同士はeqで比較されます

  COMMAND   : メニュー項目が選択されたときに実行されるコマンドです。

  INIT      : メニューが開く直前に評価され、返される値によってメニューの
              状態が設定されます。任意のS式が指定できますが、あまり無茶
              なことはしないでください。式の値として意味のある値には以下
              のものがあります。

        :modified     カレントバッファが変更されていなければ灰色表示
        :undo         undo不可能であれば灰色表示
        :redo         redo不可能であれば灰色表示
        :selection    カレントバッファのテキストが未選択であるか矩形選択
                      であれば灰色表示
        :rectangle    カレントバッファのテキストが未選択であるか矩形以外
                      の選択であれば灰色表示
        :clipboard    クリップボードが空であれば灰色表示
        :check        チェック
        :disable      灰色表示
        その他        使用可能

使用例:
  ;;; niftylog.l
  (define-popup-menu
    (:item nil "メッセージを読んだことにする(&R)"
     'log-read-article)
    (:item nil "メッセージを読んでないことにする(&N)"
     'log-unread-article)
    (:item nil "スレッドを読んだことにする(&T)"
     'log-read-thread)
    (:item nil "スレッドを読んでないことにする(&H)"
     'log-unread-thread)
    (:item nil "ニュースグループを読んだことにする(&G)")
    (:item nil "ニュースグループを読んでないことにする(&P)"))
  => #<menu 48698340>
Seealso
create-popup-menu
track-popup-menu
add-popup-menu
insert-popup-menu
define-menu