文字コードの再読み込みをメニューとか

2chで見かけたので何となくやってみた。*1

(defun encoding-menu ()
  (setq *encoding-menu-item*
		(define-popup-menu
		  (:item nil "utf-8(&U)" #'(lambda ()
									 (interactive)
									 (revert-buffer *encoding-utf8n*)))
		  (:item nil "sjis(&S)" #'(lambda ()
									(interactive)
									(revert-buffer *encoding-sjis*)))
		  (:item nil "euc-jp(&E)" #'(lambda ()
									  (interactive)
									  (revert-buffer *encoding-euc-jp*)))
		  (:item nil "auto(&A)" #'(lambda ()
									(interactive)
									(revert-buffer *encoding-auto*)))
		  :sep
		  (:item nil "詳細指定(&)" #'(lambda (encoding)
									   (interactive "zEncoding: ")
									   (revert-buffer encoding)))
		  ))
  (insert-popup-menu (get-menu *app-menu* 'ed::file)
					 (get-menu-position *app-menu* 'ed::rename-dialog)
					 *encoding-menu-item* "encode(&G)"))

 メニューの書き方は良く知らないが多分これでも動くから良いじゃないだろうか。もっと賢いやり方もあるかもしれないが。
 後のhookに引っ掛けてやるとかは好みの問題じゃないだろうか。多分.xyzzyに(setq *encodeing-menu-item* (以下略))と(insert-popup-menu(以下略))を適当に書いておけばhookなくてもいいような気はする。

*1:日曜朝から2chを覗いてxyzzy。。。。最高に廃ってやつだぜ! orz