localpop 説明書

localpop」は,バッファ毎に異なるポップアップメニュー(右クリックメニュー)を実現するxyzzy用の拡張LISPです。

mouse-menu-popupを上書きするといふ行儀の悪い方法を使用してゐるので,思はぬ副作用が出るかもしれません。

1. 導入篇

1.1 内容物

localpop.html
説明書(この文書)
localpop.l
プログラム本体
localpop.lc
プログラム本体をバイトコンパイルしたもの

1.2 インストール方法

  1. xyzzyで動くLISPなので,xyzzyを導入し,初期化ファイルを読み込む様にパスを通します。(ss-to-htmlの説明も参考に)
  2. localpop.llocalpop.lcsite-lisp/ に入れます。
  3. 初期化ファイルに (require "localpop") などと追記します。

1.2.1 アンインストール方法

インストール方法の逆をやって下さい。

2. 使用篇

2.1 使用例

use-local-menuの使用法と同様に,use-local-popup-menuを使って次の様にします。

(require "localpop")

;;; ポップアップメニューの定義 (xyzzy referenceから拝借)
(defvar *my-apps-popup-menu*
  (let ((popup-menu (copy-popup-menu)))
    (add-menu-separator popup-menu 'my-apps-popup)
    (add-popup-menu
     popup-menu
     (define-popup-menu
      (:item nil "行番号(&L)"
       'toggle-line-number)
      (:item nil "スクロールバー(&B)"
       'toggle-vscroll-bar)
      (:item nil "モードライン(&M)"
       'toggle-mode-line)
      (:item nil "ファンクションキー(&F)"
       'toggle-function-bar)
      (:item nil "折り返し(&T)"
       'toggle-fold-line)
      (:item nil "読み取り専用(&R)"
       'toggle-read-only))
     "設定(&B)")
    popup-menu))

#|
;;; 現在のバッファ独自のポップアップメニューを使ふやうにする
(use-local-popup-menu *my-apps-popup-menu*)

;;; バッファ独自のポップアップメニューを止める
(use-local-popup-menu)
|#

;;; text-modeの時に先のポップアップメニューを使ふやうにする
(defun use-my-apps-popup-menu ()
  (interactive)
  (use-local-popup-menu *my-apps-popup-menu*))
(add-hook '*text-mode-hook* 'use-my-apps-popup-menu)

2.2 函数・変数一覧

use-local-popup-menu
Type: Function
Arguments: &optional menu
現在のバッファにローカルなポップアップメニューを設定します。
use-local-menuと同様の使用法ですが,引数には只のメニューではなく,ポップアップメニューを指定してください。
引数にnilを指定するか,引数を省略すると,バッファローカルなポップアップメニューは解除されます。
copy-popup-menu
Type: Function
Arguments: &optional (popup-menu *app-popup-menu*) tag
第1引数に指定されたポップアップメニューのコピーを返します。第1引数が省略された場合は*app-popup-menu*のコピーを返します。
先の例の様に,(let ((popup-menu (copy-popup-menu))) ...)として使ふことを想定してゐます。
current-popup-menu
Type: Function
Arguments: &optional buffer
current-menuのポップアップメニュー版です。
*mouse-menu-popup-hook*
Type: Special Variable
mouse-menu-popupが呼び出された時,最初に実行されるフック変数です。
local-popup-menu
Type: Buffer-local Variable
バッファローカルなポップアップメニューを格納してゐる変数です。
save-popup-menu
Type: Macro
Arguments: &body body
bodyの実行前後で*app-popup-menu*が変らない様にする為のマクロです。
copy-function
Type: Macro
Arguments: from to
シンボルfromの函数定義を,新たなシンボルtoにコピーします。シンボルにquote(')は不要です。
ここでは,mouse-menu-popupmouse-menu-popup-globalにバックアップするのに用ゐてゐます。

3. このプログラムについて

3.1 製作者

製作者
空拇 (一問一答 - DKCCの広場)
ファイル配布所
バッファ毎に異なるポップアップメニューを実現 (localpop) - 青空物置

3.2 適用ライセンス

書庫に含まれる全てのファイルに於いて,私,空拇が作った部分は,著作権放棄とします。

Public Domain: Please feel free to reproduce or edit (except quotation)

3.3 更新履歴

2007年8月中旬
ihtmlの再開発中に分岐。
2007年8月23日 Ver.1.0.1.20070823
公開初版。
2007年8月28日 Ver.1.0.2.20070828
current-popup-menuを追加。
apps-popupが働かなくなるバグを修正。(mouse-menu-popupmouse-menu-popup-globalの引数の不一致が原因)