;;; Code:
-(eval-when-compile (require 'riece))
+(eval-when-compile
+ (require 'riece-identity)
+ (require 'riece-display))
(defvar riece-foolproof-enabled nil)
(defconst riece-foolproof-description
- "Disable channel miss")
-
-(defun riece-foolproof-command-enter-message ()
- "Send the current line to the current channel."
- (interactive)
- (when (riece-foolproof)
- (riece-command-enter-message)))
-
-(defun riece-foolproof-command-enter-message-as-notice ()
- "Send the current line to the current channel as NOTICE."
- (interactive)
- (when (riece-foolproof)
- (riece-command-enter-message-as-notice)))
+ "Channel miss killer")
(defun riece-foolproof-get-channel-window (identity)
(get-buffer-window
(cdr (riece-identity-assoc
identity riece-channel-buffer-alist))))
+(eval-when-compile
+ (defvar *dmacro-key* nil))
+
+(defun riece-foolproof-dmacro-override (&optional arg)
+ (when (and (fboundp 'dmacro-exec) (boundp '*dmacro-key*))
+ (with-current-buffer riece-command-buffer
+ (if arg
+ (when (eq (key-binding *dmacro-key*) 'dmacro-exec)
+ (local-set-key *dmacro-key* #'ignore))
+ (when (eq (key-binding *dmacro-key*) 'ignore)
+ (local-unset-key *dmacro-key*))))))
+
(defun riece-foolproof-insinuate ()
(defadvice riece-command-send-message (before riece-foolproof)
(unless (or (not riece-channel-buffer-mode)
(riece-foolproof-get-channel-window
riece-current-channel))
(error "%s is not displayed. (maybe channel miss)"
- (riece-identity-prefix riece-current-channel)))))
+ (riece-identity-prefix riece-current-channel)))
+ (unless (null executing-macro)
+ (error "Don't use `riece-command-send-message' in keyboard macro"))))
(defun riece-foolproof-enable ()
+ (riece-foolproof-dmacro-override t)
(ad-enable-advice 'riece-command-send-message 'before 'riece-foolproof)
(ad-activate 'riece-command-send-message)
(setq riece-foolproof-enabled t))
(defun riece-foolproof-disable ()
+ (riece-foolproof-dmacro-override nil)
(ad-disable-advice 'riece-command-send-message 'before 'riece-foolproof)
(ad-activate 'riece-command-send-message)
(setq riece-foolproof-enabled nil))